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:对用户输入的内容在输出时进行正确转义或编码
  2. 方案2:非 HTML 接口的 Content-Type 排除 text/html,并配合 X-Content-Type-Options: nosniff

4. 实例

4.1. 非 HTML 接口

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

5. 参考

讨论

使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看