- 黑客往 HTML 文件中或者 DOM 中注入恶意脚本,从而在用户浏览界面是利用注入的恶意脚本对用户实施攻击的一种手段。
- 恶意脚本注入方式:
- 存储型 XSS 攻击:
- 首先黑客利用站点漏洞将一段恶意 JavaScript 代码提交到网站的数据库中;
- 然后用户向网站请求包含了恶意 JavaScript 脚本的页面;
- 当用户浏览该页面的时候,恶意脚本就会将用户的 Cookie 信息等数据上传到服务器;
- 常见的有:论坛发帖、商品评论、用户私信等
- 反射型 XSS 攻击:
- 攻击者构造带有恶意代码的 URL,并诱导用户点击;
- 用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 取出,拼接在 HTML 中返回浏览器;
- 用户浏览器接收到相应后,混在其中的恶意代码也被执行;
- 恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者的操作;
- 常见的有:弹窗广告,网站搜索
- DOM 型 XSS 攻击:
- 攻击者劫持页面传输工程中修改 HTML 的内容;
- 用户打开浏览器后执行恶意代码;
- 如何防御:
- 服务器对输入脚本进行过滤或转码;
- 充分利用 CSP,建立访问白名单;
- 对 cookie 使用 HttpOnly 属性,限制只能请求获取,不能通过 js 脚本获取