
如果你刚开始学前端,一定听过“XSS 攻击”。
但网上的解释通常太理论、太绕。
今天我用 最简单的语言 ,5 分钟让你完全搞懂。
一、XSS 到底是什么?一句话版本
XSS = 攻击者把恶意脚本塞进网页,让浏览器误以为是正常代码,进而执行。
你点开了一个网页 → 页面里藏着攻击者写的 JS → 浏览器照样执行 → 数据被偷、账号被盗。
重点:浏览器分不清这段 JS 是你写的,还是坏人写的。
二、为什么叫 “XSS” 而不是 “CSS”?
因为 CSS 已经被占用了(层叠样式表)。
所以“Cross-Site Scripting” 改写成 XSS。
三、来一张图,一看就懂
👇 XSS 的基本工作流程
你可以想象成:
攻击者在你喝的水里加了药 → 你以为是普通水 → 结果喝下去就中招了。
四、再一张图:实际的前端示例
假设你的网站会把用户输入的内容直接显示出来:
攻击者发送一个链接给你:
点击之后:
你的页面 真的会执行 alert。
👇 图示流程
五、XSS 可以造成哪些危害?
-
盗走你的 Cookie → 登录态被接管
-
强制跳转恶意网站
-
伪造请求(比如直接帮你下单)
-
获取你当前页面的任意数据
-
显示钓鱼 UI(假登录框)
一句话:
你的浏览器给了攻击者“管理员权限”。
六、怎么防?给你最实用的“前端防 XSS 三板斧”
1)输出内容时永远不要用 innerHTML(新手最容易踩)
用 textContent,不用 innerHTML
2)对输入进行转义(Escape)
把危险字符转义,例如:
这样脚本就不会执行了。
3)永远不要相信用户输入(这是铁律)
用户输入 = 可能含恶意内容
任何地方用到它都要处理。
七、总结(非常关键)
XSS = 用户输入的恶意脚本最终在浏览器被执行。
它并不是一个新概念,但至今依旧是最常见的前端安全问题。
如果学前端,一定要知道:
-
浏览器不会帮你分辨“合法的 JS” vs “恶意 JS”
-
99% 的 XSS 来自你在用
innerHTML -
最好的防护就是“输出时不要执行,输入时不要信任”
牢记这三点,你就比大多数新人更懂安全。