4.2.6. XSS保护

4.2.6.1. HTML过滤

使用一些白名单或者黑名单来过滤用户输入的HTML,以实现过滤的效果。例如DOMPurify等工具都是用该方式实现了XSS的保护。

4.2.6.2. X-Frame

X-Frame-Options 响应头有三个可选的值:

  • DENY
    • 页面不能被嵌入到任何iframe或frame中
  • SAMEORIGIN
    • 页面只能被本站页面嵌入到iframe或者frame中
  • ALLOW-FROM
    • 页面允许frame或frame加载

4.2.6.3. XSS保护头

基于 Webkit 内核的浏览器(比如Chrome)有一个名为XSS auditor的防护机制,如果浏览器检测到了含有恶意代码的输入被呈现在HTML文档中,那么这段呈现的恶意代码要么被删除,要么被转义,恶意代码不会被正常的渲染出来。

而浏览器是否要拦截这段恶意代码取决于浏览器的XSS防护设置。

要设置浏览器的防护机制,则可使用X-XSS-Protection字段 该字段有三个可选的值

0: 表示关闭浏览器的XSS防护机制

1: 删除检测到的恶意代码, 如果响应报文中没有看到X-XSS-Protection 字段,那么浏览器就认为X-XSS-Protection配置为1,这是浏览器的默认设置

1; mode=block: 如果检测到恶意代码,在不渲染恶意代码

FireFox没有相关的保护机制,如果需要保护,可使用NoScript等相关插件。