0×00 配景
在统计了Alexa top 100万网站的header安详阐明之后(2012年11月 – 2013年3月 – 2013年11月),我们发明其实如何正确的配置一个header并不是一件容易的工作。尽量有数不胜数的网站会利用大量有关安详方面的header,但并没有一个像样的平台可以或许为开拓者们提供须要的信息,以分辨那些常见的错误配置。可能说,纵然这些安详方面的header配置正确了,也没有一个平台可以或许为开拓者提供一个系统的测试要领,用来测试正确与否。这些header假如配置错误了不只会发生安详的假象,甚至会对网站的安详发生威胁。veracode认为安详性header是网络防护中很是重要的一环,而且他但愿让开拓者们可以或许简便、正确地配置站点。假如您对某一header或配置有任何疑问,我们有极好的资源可以或许追踪到欣赏器支持环境。
0×01 细节1. X-XSS-Protection
目标
这个header主要是用来防备欣赏器中的反射性xss。此刻,只有IE,chrome和safari(webkit)支持这个header。
正确的配置
0 – 封锁对欣赏器的xss防护
1 – 开启xss防护
1; mode=block – 开启xss防护并通知欣赏器阻止而不是过滤用户注入的剧本。
1; report=http://site.com/report – 这个只有chrome和webkit内核的欣赏器支持,这种模式汇报欣赏器当
发明疑似xss进攻的时候就将这部门数据post到指定地点。
0 – 封锁对欣赏器的xss防护 1 – 开启xss防护 1; mode=block – 开启xss防护并通知欣赏器阻止而不是过滤用户注入的剧本。 1; report=http://site.com/report – 这个只有chrome和webkit内核的欣赏器支持,这种模式汇报欣赏器当 发明疑似xss进攻的时候就将这部门数据post到指定地点。
|
凡是不正确的配置
0; mode=block; – 记着当设置为0的时候,纵然加了mode=block选项也是没有结果的。需要指出的是,chrome
在发明这种错误的设置后照旧会开启xss防护。
1 mode=block; – 数字和选项之间必需是用分号支解,逗号和空格都是错误的。可是这种错误设置环境下,
IE和chrome照旧默认会清洗xss进攻,可是不会阻拦。
0; mode=block; – 记着当设置为0的时候,纵然加了mode=block选项也是没有结果的。需要指出的是,chrome 在发明这种错误的设置后照旧会开启xss防护。 1 mode=block; – 数字和选项之间必需是用分号支解,逗号和空格都是错误的。可是这种错误设置环境下, IE和chrome照旧默认会清洗xss进攻,可是不会阻拦。
|
如何检测
假如过滤器检测或阻拦了一个反射性xss今后,IE会弹出一个对话框。当配置为1时,chrome会埋没对反射性xss的输出。假如是配置为 1; mode=block ,那么chrome会直接将user-agent置为一个空值:, URL 这种形式。
参考文献
Post from Microsoft on the X-XSS-Protection Header
Chromium X-XSS-Protection Header Parsing Source
Discussion of report format in WebKit bugzilla
目标
这个header主要用来防备在IE9、chrome和safari中的MIME范例夹杂进攻。firefox今朝对此还存在争议。凡是欣赏器可以通过嗅探内容自己的要领来抉择它是什么范例,而不是看响应中的content-type值。通过配置 X-Content-Type-Options:假如content-type和期望的范例匹配,则不需要嗅探,只能从外部加载确定范例的资源。举个例子,假如加载了一个样式表,那么资源的MIME范例只能是text/css,对付IE中的剧本资源,以下的内容范例是有效的:
application/ecmascript
application/javascript
application/x-javascript
text/ecmascript
text/javascript
text/jscript
text/x-javascript
text/vbs
text/vbscript
application/ecmascript application/javascript application/x-javascript text/ecmascript text/javascript text/jscript text/x-javascript text/vbs text/vbscript
|
对付chrome,则支持下面的MIME 范例: