X-Frames-Option
X-Content-Type-Options
X-XSS-Protection
。
X-Frames-Option
这个头用来告诉浏览器,是否同意把页面展示到frames
或者iframe
里面,这样可以保证页面不会被嵌入到恶意网站里面展示,从而避免点击劫持的攻击。
语法:1
2
3X-Frame-Options: deny
X-Frame-Options: sameorigin
X-Frame-Options: allow-from https://example.com/
deny
表示该页面不允许在frame
中展示,即便是在相同域名的页面中嵌套也不允许。sameorigin
表示该页面可以在相同域名页面的frame
中展示。allow-from uri
表示该页面可以在指定来源的frame
中展示。
这真是个简单好用的手段。
注意:不同其它的http
头部,这个头部在meta
标签中设置无效!
X-Content-Type-Options
这个头用来告诉浏览器一定要遵循在Content-Type
首部中对MIME
的设定,而不能对其进行修改。这就禁用了客户端的MIME
类型嗅探行为。但是要求网站运维和开发人员必须把各个资源的content-type
设置准确。
语法:1
X-Content-Type-Options: nosniff
nosniff
下面两种情况的请求将被阻止:- 请求类型是
style
但是MIME
类型不是text/css
, - 请求类型是
script
但是MIME
类型不是JavaScriptMIME
类型。
- 请求类型是
注意: nosniff
只应用于script
和style
两种类型。
X-XSS-Protection
这个是Internet Explorer,Chrome和Safari的一个功能,当检测到跨站脚本攻击 (XSS)时,浏览器将停止加载页面。这个头在现代浏览器上不是很有必要,因为现代浏览器可以通过CSP
来对javascript
做非常严格的控制,但是这个头对于不支持CSP
旧版浏览器是有保护作用的。
语法:1
2
3
4X-XSS-Protection: 0
X-XSS-Protection: 1
X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; report=<reporting-uri>
0
禁止XSS过滤。1
启用XSS过滤(通常浏览器是默认的)。 如果检测到跨站脚本攻击,浏览器将清除页面(删除不安全的部分)。1;mode=block
启用XSS过滤。 如果检测到攻击,浏览器将不会清除页面,而是阻止页面加载。1; report=<reporting-URI>
(Chromium only)
启用XSS过滤。 如果检测到跨站脚本攻击,浏览器将清除页面并使用CSP report-uri
指令的功能发送违规报告。