0×00 配景
在統(tǒng)計了Alexa top 100萬網(wǎng)站的header安詳闡明之后(2012年11月 – 2013年3月 – 2013年11月),我們發(fā)明其實如何正確的配置一個header并不是一件容易的工作。盡量有數(shù)不勝數(shù)的網(wǎng)站會利用大量有關安詳方面的header,但并沒有一個像樣的平臺可以或許為開拓者們提供須要的信息,以分辨那些常見的錯誤配置。可能說,縱然這些安詳方面的header配置正確了,也沒有一個平臺可以或許為開拓者提供一個系統(tǒng)的測試要領,用來測試正確與否。這些header假如配置錯誤了不只會發(fā)生安詳?shù)募傧螅踔習W(wǎng)站的安詳發(fā)生威脅。veracode認為安詳性header是網(wǎng)絡防護中很是重要的一環(huán),而且他但愿讓開拓者們可以或許簡便、正確地配置站點。假如您對某一header或配置有任何疑問,我們有極好的資源可以或許追蹤到欣賞器支持環(huán)境。
0×01 細節(jié)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內(nèi)核的欣賞器支持,這種模式匯報欣賞器當
發(fā)明疑似xss進攻的時候就將這部門數(shù)據(jù)post到指定地點。
0 – 封鎖對欣賞器的xss防護 1 – 開啟xss防護 1; mode=block – 開啟xss防護并通知欣賞器阻止而不是過濾用戶注入的劇本。 1; report=http://site.com/report – 這個只有chrome和webkit內(nèi)核的欣賞器支持,這種模式匯報欣賞器當 發(fā)明疑似xss進攻的時候就將這部門數(shù)據(jù)post到指定地點。
|
凡是不正確的配置
0; mode=block; – 記著當設置為0的時候,縱然加了mode=block選項也是沒有結果的。需要指出的是,chrome
在發(fā)明這種錯誤的設置后照舊會開啟xss防護。
1 mode=block; – 數(shù)字和選項之間必需是用分號支解,逗號和空格都是錯誤的。可是這種錯誤設置環(huán)境下,
IE和chrome照舊默認會清洗xss進攻,可是不會阻攔。
0; mode=block; – 記著當設置為0的時候,縱然加了mode=block選項也是沒有結果的。需要指出的是,chrome 在發(fā)明這種錯誤的設置后照舊會開啟xss防護。 1 mode=block; – 數(shù)字和選項之間必需是用分號支解,逗號和空格都是錯誤的。可是這種錯誤設置環(huán)境下, 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今朝對此還存在爭議。凡是欣賞器可以通過嗅探內(nèi)容自己的要領來抉擇它是什么范例,而不是看響應中的content-type值。通過配置 X-Content-Type-Options:假如content-type和期望的范例匹配,則不需要嗅探,只能從外部加載確定范例的資源。舉個例子,假如加載了一個樣式表,那么資源的MIME范例只能是text/css,對付IE中的劇本資源,以下的內(nèi)容范例是有效的:
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 范例: