NOTE

1.9 XSS

XSS 的原理、成因与输出编码等防御方式。

Security更新于 约 1 分钟读完historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. XSS攻击是什么

一种Web攻击 比如用户A输入<script>alert(1)</script>,如果输出到 HTML 时没有按上下文进行正确编码的话,用户B打开就会一直弹窗

2. 为什么会发生XSS攻击

构成XSS的首要条件是:响应Content-Type类型为text/html,然后把用户的非法输入当作代码执行。

3. 如何防范XSS攻击

  1. 方案1:在输出位置按照 HTML、属性、URL、JavaScript 等上下文进行正确编码;优先使用默认自动转义的模板系统。
  2. 方案2:如果接口本来就不是 HTML,返回正确的 Content-Type,并可配合 X-Content-Type-Options: nosniff。这不能替代 HTML 场景中的输出编码。

4. 实例

4.1. 非 HTML 接口

  1. Content-Type排除text/html,这样浏览器就不会以text/html方式来解析response,但是由于部分浏览器有Content-Sniff特性,仍会将该类接口作为HTML页面解析,所以得在http响应时加上headerX-Content-Type-Options: nosniff

5. 参考

正在加载有帮助数量