0%

Http请求头安全策略概述

文章字数:703,阅读全文大约需要2分钟

Http请求头中有一些可以控制安全策略的部分,通过设置这些头可以提高网站安全系数

X-Frame-Options/Frame-Options

如果网站可以嵌入到IFRAME元素中,则攻击者可以建一个假网页,在假网页中嵌套真实的网站。即使有跨站点请求伪造保护,这种攻击也是可能的,并且被称为clickjacking
创建X-Frame-Options标题可以允许网站所有者决定哪些网站允许构建(嵌套)。
通常设置成

  1. SAMEORIGIN: 允许同源策略的资源嵌套
  2. DENY: 拒绝任何资源嵌套

X-Frame-Options 标题已被弃用,将由内容安全策略中的Frame-Options指令替换,该指令仍处于活动开发阶段。但是,“X-Frame-Options”标题目前具有更广泛的支持,因此仍应实施安全措施。

Content-Security-Policy

内容安全策略(CSP)旨在web程序通知浏览器有关应用程序预期行为(内容源、脚本源、插件类型、和其它远程资源),即设置引入的图像、脚本等资源的限制。可以防止跨站脚本攻击等。

例:CSP指定您的网站希望从任何URI加载图像,从受信任的媒体提供商(包括内容分发网络)列表中插入插件内容,以及仅从您控制的服务器加载脚本

1
Content-Security-Policy:default-src'self'; img-src *; object-src media1.example.com media2.example.com * .cdn.example.com; script-src trustedscripts.example.com
  • none不匹配任何东西
  • self匹配当前域,单不包括子域。例如xxx.com可以,www.xxx.com不行
  • unsafe-inline允许内嵌脚本样式
  • unsafe-eval允许通过字符串动态创建脚本,如evalsetTimeout

X-Content-Type-Options

如果服务器响应头X-Content-Type-Options: nosniffscriptstyleSheet元素会拒绝错误的MIME类型的响应,防止MIME类型的混淆的工具。
如果设置了X-Content-Type-Options: nosniff参数,scriptstyleSheet标签就会过滤非指定的文件类型。正确的MIME应该是text/javascript这样的。

X-XSS-Protection

xss自动过滤的配置,浏览器可以帮助防止跨站点脚本攻击(IE, Chrome, Safari支持)
推荐设置(开启xss防护,并且阻止而不是过滤用户注入的脚本)

1
X-XSS-Protection:1; mode = block。

其它参数

1
2
3
4
0 – 关闭对浏览器的xss防护 
1 – 开启xss防护
1; mode=block – 开启xss防护并通知浏览器阻止而不是过滤用户注入的脚本。
1; report=http://site.com/report – 这个只有chrome和webkit内核的浏览器支持,这种模式告诉浏览器当发现疑似xss攻击的时候就将这部分数据post到指定地址。

X-XSS-Protection标题已被弃用,被内容安全策略的Reflected-XSS指令取代,但是该指令仍处于活动开发阶段。X-XSS-Protection有更广泛的支持