参考文献
定义
服务端把用户输入的数据,未经过正确的编码或过滤就输出到HTML页面里,浏览器把它当成脚本执行了
典型例子
- 正常页面输出搜索词:
搜索结果:用户输入的内容 - 如果用户输入:
<script>alert(1)<script> - 页面变成:
搜索结果:<script>alert(1)<script>浏览器会认为这是一段JavaScript代码,会交给浏览器里的JavaScript引擎去执行,于是弹出窗口。就可以证明存在xss漏洞
分类
1.反射型xss
- 恶意代码放在URL参数,搜索词,错误提示里,服务器收到后直接“反射”回页面常见于搜索页、跳转页、错误页、,可以配合钓鱼链接
- 大致流程:攻击者构造恶意链接-> 受害者点击-> 服务器把参数输出到页面-> 浏览器执行
2.储存型xss
- 恶意代码被写入数据库、文件、缓存中,比如评论、留言、昵称、帖子、公告
- 流程:攻击者提交恶意内容-> 存入数据库-> 其他人访问页面-> 服务器取出并输出-> 浏览器执行
3.DOM型xxs
- 恶意数据不一定会发送到服务器,而是由前端JavaScript从url、hash、referrer等位置读取
- 流程:用户访问带恶意数据的页面-> 前端JS读取location、hash等-> 不安全的写入DOM-> 浏览器执行
总结
存在xss漏洞,说明网站把用户输入原样输出到页面里,浏览器无法区分“正常内容和“恶意脚本”,于是攻击者可以借这个页面去攻击其他访问者