专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

跨域脚本攻击(XSS):存储性 XSS 攻击、反射型 XSS 攻击和基于 DOM 的 XSS 攻击

跨域脚本攻击(XSS)是把恶意脚本注入 HTML 文件或 DOM 中,在用户浏览页面时实施攻击的一种手段。

一、恶意脚本能做什么?

  • 窃取 Cookie 信息
document.cookie; // 输出:Gnahz=Test-Cookie

  • 监听用户行为, addEventListener 接口监听键盘事件,比如获取输入的信用卡信息。
  • 修改 DOM 伪造假的登录窗口,欺骗用户输入用户名和密码等信息。
  • 在页面内生成浮窗广告。

二、如何攻击?常见的有三种注入方式:存储性 XSS 攻击、反射型 XSS 攻击和基于 DOM 的 XSS 攻击。

  • 存储型 XSS 攻击

1、黑客利用站点漏洞将一段恶意的 JavaScript 代码提交到数据库中。

2、如果用户向网站请求了包含恶意脚本的页面。

3、浏览这页面时,恶意脚本就会把用户的 Cookie 信息等数据窃取上传到黑客的服务器。

  • 反射型 XSS 攻击

1、用户将一段含有恶意代码的请求提交给 Web 服务器。

2、服务器受到请求后又将恶意代码反射给浏览器。

与存储型 XSS 攻击不同是:服务器不会存储反射 XSS 攻击的脚本。

现实场景:聊天群或邮箱诱导用户点击的恶意链接。

  • 基于 DOM 的 XSS 攻击

不牵涉到 Web 服务器的攻击,通过各种手段将恶意脚本注入用户的页面中,比如通过网络劫持在页面传输过程中或使用页面过程中修改 HTML 页面的内容(通过 WiFi 路由器劫持、通过本地恶意软件劫持)

  • 三者共同点:都需要往页面注入恶意脚本,获取用户数据。
  • 三者不同点:注入方法不一样,存储型 XSS 攻击和放射型 XSS 攻击是服务器端的安全漏洞;而基于 DOM 的攻击是客户端

三、如何防范?

1、服务器对输入脚本过滤或转码

  • 过滤 HTML