Cross Site Script 跨站脚本攻击
在 web页面注入脚本,使用 JS窃取用户信息
为了和层叠样式表(Cascading Style Sheet)有所区分,因而在安全领域叫做 XSS

XSS预防

  • HttpOnly 防止劫取 Cookie
  • 用户的输入检查
  • 服务端的输出检查

过滤输入

不要相信前端的任何输入,必须对前端的输入进行过滤
对用户的输入进行过滤,移除用户输入的

  • html标签过滤
    • escape 过滤 html标签
  • style节点
  • script节点
  • iframe节点 ```jsx npm install xss

ctx.help.escape()

  1. <a name="R8H9s"></a>
  2. ### HTML编码
  3. HTML Entity编码
  4. <a name="ObUvt"></a>
  5. ### cookie
  6. 将重要的 cookie,设置成 httpOnly,禁止通过 js获取 cookie
  7. <a name="LJNLQ"></a>
  8. ## XSS攻击场景
  9. XSS出现的根源:用户输入的内容会执行危险的代码,例如
  10. 1. 留言
  11. 1. 发帖子,发文章
  12. 1. 添加商品,预览商品
  13. 1. 店铺装修
  14. 1. 低代码平台的自定义代码
  15. 1. 在网站上注入恶意的客户端代码
  16. 1. input
  17. 1. image
  18. 1. 恶意脚本一般包括 JavaScript,有时也会包含 HTML 和 Flash
  19. 1. 共同点为:将一些隐私数据像 cookie、session 发送给攻击者,
  20. 1. 将受害者重定向到一个由攻击者控制的网站,在受害者的机器上进行一些恶意操作
  21. <a name="bhEHI"></a>
  22. ### DOM-base攻击
  23. 利用 DOM本身的缺陷攻击,例如<br />img标签 onerror属性<br />a href属性
  24. ```jsx
  25. <img src="./user.jpg" onerror="javascript:alert('img xss')">

存储型攻击

表单提交的数据存在恶意代码,被保存到目标网站的服务器中

反射性攻击

恶意代码并没有被保存在目标网站,
通过引诱用户点击一个链接,到目标网站的恶意链接来实施攻击。