XSS攻击


2021-03-10 上次更新时间:4/29/2022, 9:34:08 AM 0

Cross-Site Scripting(跨站脚本攻击)简称 XSS,是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID 等,进而危害数据安全。

根据攻击的来源,XSS 攻击可分为存储型、反射型和 DOM 型三种

# 存储型攻击(持久型跨站)

持久型跨站是最直接的危害类型,跨站代码存储在服务器。

存储型攻击常发生在微博论坛等用户发帖、提交文章评论等地方。

# 反射型攻击(非持久型跨站)

非持久型跨站:反射型跨站脚本漏洞,最普遍的类型。属于服务端安全漏洞

反射型攻击主要发生在一些带有诱导性的链接的按钮邮件等。

# DOM型攻击

DOM型攻击:属于客户端安全漏洞

# 如何防范?

  • 客户端对用户输入的内容进行安全符转义,服务端对上交内容进行安全转义。
  • 服务端渲染开启模板引擎自带的 HTML 转义功能。
  • 避免内联事件,尽量不要使用 onLoad="onload()"onClick="go()" 这种拼接内联事件的写法。在JavaScript 中通过 .addEventlistener() 事件绑定会更安全。
  • 避免拼接 HTML,前端采用拼接 HTML 的方法比较危险,如果框架允许,使用 createElement、setAttribute 之类的方法实现。或者采用比较成熟的渲染框架,如 Vue/React 等。
  • 时刻保持警惕在插入位置为 DOM 属性、链接等位置时,要打起精神,严加防范。
  • 通过 CSP、输入长度配置、接口安全措施等方法,增加攻击的难度,降低攻击的后果。
  • 主动检测和发现,可使用 XSS 攻击字符串和自动扫描工具寻找潜在的 XSS 漏洞。
  • 尽量避免三方跨域提交内容到服务端
  • 设置 HTTP-only Cookie: 禁止 JavaScript 读取某些敏感 Cookie,攻击者完成 XSS 注入后也无法窃取此 Cookie。
  • 使用验证码:防止脚本冒充用户提交危险操作。
上次更新时间: 4/29/2022, 9:34:08 AM