一、什么是 XSS
XSS全称(Cross Site Scripting)跨站脚本攻击,是最常见的Web应用程序安全漏洞之一,位于OWASP top 10 2017年度第三名XSS是指攻击者在网页中嵌入客户端脚本,通常是JavaScript编写的危险代码,当用户使用浏览器浏览网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的。
二、XSS 原理
用户提交的数据没有过滤,或者过滤不严格,输出到网页中 ,导致可以构造执行JS代码,或者修改网页内容。
三、XSS 危害
1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力
3、盗窃企业重要的具有商业价值的资料
4、非法转账
5、强制发送电子邮件
6、网站挂马
7、控制受害者机器向其它网站发起攻击
四、XSS 分类
反射型XSS:
反射型XSS,又称为非持久型XSS。XSS代码出现在URL参数中,浏览器发出请求时,参数值作为输入提交到服务器,服务器解后参数值出现在响应的HTML中,最后浏览器解析执行了这段XSS代码。
存储型XSS:
存储型XSS,又称持久型XSS,它和反射型XSS最大的不同就是,攻击脚本将被永久地存放在目标服务器的数据库或文件中。
DOM XSS:
DOM XSS,与反射型XSS和存储型XSS的差别是在于DOM XSS的代码不需要服务器解析响应的直接参与,触发XSS靠的是浏览器DOM解析器的解析,可以完全认为是客户端的事情。
五、漏洞演示
- 反射型
Step1:打开页面输入your name 发现页面返回Hello
加我们输入的内容。
Step2:于是我们输入Js脚本它会不会也同样输出呢?
脚本语法:
<a onclick="alert(1)">点击出现弹框!</a>
//设置<a>标签单击事件,点击出现弹框
-
如图:
Step3:单击发现弹框出现,这种非持久性XSS 就属于反射型 XSS。
- 存储型
Step1:在留言页面输入留言发现输入内容被存入数据库。
Step2:同样我们输入脚本代码。
Step3:发现我们输入的脚本代码已经执行。
Step4:刷新页面发现脚本代码再次执行,这种持久性XSS 就属于存储型XSS。
六、XSS 防御
1、对XSS的防御需要根据实际情况对用户的输入进行严格的过滤。基于过滤的XSS防御方式通常可分为两种:基于黑名单的过滤和基于白名单的过滤。后者的防御效果往往更好,对于用户在白名单之外的输入,可以直接忽略。在构造白名单的过程中需要保证在不影响用户体验的同时,尽可能杜绝一切不必要的输入内容。
2、在cookie中加入httponly属性可以在一定程度上保护用户的cookie,减少出现XSS时损失。
3、Flash XSS的修复需要对相应的flash进行修改或升级替换。
注:《白帽子讲Web安全》中有一句话:互联网本来是安全的,自从有了研究安全的人之后,互联网就变得不安全了。
所以,小编希望大家都是白帽子,而不是一群只会搞恶作剧的骇客。
由于小编也在学习中,写的不好见谅。
从0到1学习网络安全 【目录】
未完待续...