当前位置:首页 > 热点

xss漏洞类型

XSS漏洞类型

反射型XSS是洞类最容易被忽视的那种。攻击者把恶意脚本塞进URL参数,洞类服务器不加过滤就把参数拼进HTML返回。洞类用户点开链接,洞类脚本在浏览器里跑起来,洞类cookie被偷走,洞类会话被劫持。洞类整个过程不到一秒,洞类受害者毫无察觉。洞类

举个真实案例。洞类某电商平台的洞类搜索框,输入<script>alert(document.cookie)</script>,洞类页面直接弹窗。洞类开发觉得这只是洞类个弹窗,没什么大不了。洞类但换成窃取cookie的脚本,把数据发到攻击者服务器,问题就严重了。这种漏洞修复很简单——对输出做HTML实体编码就行,但很多老项目至今没做。

存储型XSS更危险,因为恶意代码永久留在服务器上。论坛帖子、评论区、用户昵称都是重灾区。攻击者提交一条含恶意脚本的评论,所有浏览该页面的用户都会中招。这相当于把炸弹埋在你经常走的路面上,每次路过都可能引爆。

我见过一个社交网站,用户资料页的“个人签名”字段没过滤富文本。攻击者把签名改成一段窃取登录态的JavaScript,管理员一查看他的资料,管理员账号就被盗了。存储型XSS的杀伤力取决于存储位置的“权限”——如果存在后台管理系统可见的字段,那就是直接攻击管理员。

DOM型XSS跟前两者完全不同,它不经过服务器。恶意代码通过URL片段或本地存储进入,在前端JavaScript里被拼接到DOM操作中。比如网站用location.hash来切换页面状态,攻击者构造#<img src=x onerror=alert(1)>,前端代码直接把这段内容插入innerHTML,脚本就执行了。

这种漏洞特别隐蔽,因为服务器日志里看不到任何异常请求,甚至WAF(Web应用防火墙)也检测不到——攻击流量根本没到服务器。前后端分离的SPA应用尤其容易踩坑,开发者以为做了接口过滤就万事大吉,却忽略了前端自己处理URL参数的那条链路。

还有一种变体叫万能XSS,利用浏览器或插件的漏洞触发。比如老版本IE的CSS表达式、某些浏览器对MIME类型的错误解析。这类漏洞通常由浏览器厂商修复,但用户不更新浏览器就永远暴露在风险中。企业内网那些装了老旧浏览器的电脑,就是这类攻击的活靶子。

判断一个XSS类型,最简单的办法是问:恶意代码在哪个环节被执行?如果执行发生在服务器返回的HTML里,看代码是立即执行(反射型)还是存下来后执行(存储型);如果执行发生在客户端JavaScript操作DOM时,那就是DOM型。实际漏洞往往混合出现——反射型参数被存进数据库,或者DOM型代码又触发了一个存储型接口。

防御思路得分层。输出编码是底线,任何用户可控数据进HTML都要转义。CSP(内容安全策略)能限制脚本来源,即使注入成功也跑不起来。前端DOM操作要避免innerHTML,用textContent代替。最后别忘了,XSS的本质是“数据”被当成了“代码”,只要分清这两者,漏洞就不攻自破。

分享到: