Skip to content

HTTP 首部字段是可以自行扩展的。所以在 Web 服务器和浏览器的应用上,会出现各种非标准的首部字段。

接下来,我们就一些最为常用的首部字段进行说明:

• X-Frame-Options、X-XSS-Protection、DNT、P3P

X-Frame-Options

首部字段 X-Frame-Options 属于 HTTP 响应首部,用于控制网站内容在其他 Web 网站的 Frame 标签内的显示问题。 其主要目的是为了防止点击劫持(clickjacking)攻击。

http
X-Frame-Options: DENY

首部字段 X-Frame-Options 有以下两个可指定的字段值:

  • DENY:表示当前页面不能被其他页面引用。

  • SAMEORIGIN:表示当前页面只能被同源页面引用。 仅同源域名下的页面(Top-level-browsing-context)匹配时许可。 (如:当指定 http://hackr.jp/sample.html 页面为 SAMEORIGIN 时, 那么 hackr.jp 上所有页面的 frame 都被允许可加载该页面,而 example.com 等其他域名的页面就不行了)

支持该首部字段的浏览器有:Internet Explorer 8、 Firefox3.6.9+、 Chrome 4.1.249.1042+、 Safari 4+ 和 Opera 10.50+ 等。现在主流的浏览器都已经支持。

能在所有的 Web 服务器端预先设定好 X-Frame-Options 字段值是最理想的状态。

对 apache2.conf 的配置实例

XML
<IfModule mod_headers.c>
    Header append X-FRAME-OPTIONS "SAMEORIGIN"
</IfModule>

X-XSS-Protection

首部字段 X-XSS-Protection 属于 HTTP 响应首部,它是针对跨站脚本攻击(XSS)的一种对策,用于控制浏览器 XSS 防护机制的开关。

http
X-XSS-Protection: 1

首部字段 X-XSS-Protection 可指定的字段值如下:

  • 1:表示开启 XSS 防护机制。
  • 0:表示关闭 XSS 防护机制。

DNT

首部字段 DNT 属于 HTTP 请求首部,其中 DNT 是 Do Not Track 的简称, 意为拒绝个人信息被收集,是表示拒绝被精准广告追踪的一种方法。

http
DNT: 1

首部字段 DNT 可指定的字段值如下:

  • 1:表示拒绝被精准广告追踪。
  • 0:表示允许被精准广告追踪。

img

由于首部字段 DNT 的功能具备有效性,所以 Web 服务器需要对 DNT 做对应的支持。

P3P

首部字段 P3P 属于 HTTP 响应首部,通过利用 P3P(The Platformfor Privacy Preferences,在线隐私偏好平台)技术, 可以让 Web 网站上的个人隐私变成一种仅供程序可理解的形式,以达到保护用户隐私的目的。

http
P3P: CP="CAO DSP LAW CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa OUR BUS IND UNI COM NAV INT"

要进行 P3P 的设定,需按以下操作步骤进行:

  • 步骤1: 创建 P3P 隐私
  • 步骤2: 创建 P3P 隐私对照文件后,保存命名在 /w3c/p3p.xml
  • 步骤3: 从 P3P 隐私中新建 Compact policies 后,输出到 HTTP 响应中有关 P3P 的详细规范标准请参看下方链接。

The Platform for Privacy Preferences 1.0(P3P1.0)Specification

协议中对 X- 前缀的废除

在 HTTP 等多种协议中,通过给非标准参数加上前缀 X-,来区别于标准参数,并使那些非标准的参数作为扩展变成可能。 但是这种简单粗暴的做法有百害而无一益,因此在“RFC 6648-Deprecating the "X-" Prefix and Similar Constructs in Application Protocols”中提议停止该做法。

然而,对已经在使用中的 X- 前缀来说,不应该要求其变更。

如有转载或CV请标注本站原文地址