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