4個(gè)常用的HTTP安全頭部

它曾是世界性圖書館夢(mèng)的開始,現(xiàn)在它是全球知識(shí)的聚集地,它是目前最流行的,人們將應(yīng)用都部署之上的萬維網(wǎng)。
它是敏捷的代表,它不是單一的實(shí)體,它由客戶端和服務(wù)端組成,它的功能在不斷地強(qiáng)大,它還有標(biāo)準(zhǔn)。
雖然越來越多的解決方案非常適用于發(fā)現(xiàn)什么可行,什么不可行,但它幾乎沒有一致性,沒有易于應(yīng)用的編程模型。俗話說的好:事情越簡(jiǎn)單,越安全。簡(jiǎn)單的事物很難有像XSS,CSRF或點(diǎn)擊挾持的漏洞。
由于HTTP是一個(gè)可擴(kuò)展的協(xié)議,各瀏覽器廠商都率先推出了有效的頭部,來阻止漏洞利用或提高利用漏洞的難度。了解它們是什么,掌握如何應(yīng)用,可以提高系統(tǒng)的安全性。
1.Content-Security-Policy它怎么就那么好?
怎么才能盡可能不遭受XSS攻擊呢?如果有人在你的服務(wù)器上寫了如下代碼瀏覽器可能不去解析?
<script>alert(1);</script>,
下面是內(nèi)容安全規(guī)范中的說明。
添加內(nèi)容安全規(guī)范頭部并賦以適當(dāng)?shù)闹担梢韵拗葡旅鎸傩缘膩碓矗?br />
script-src: JavaScript code (biggest reason to use this header)
connect-src: XMLHttpRequest, WebSockets, and EventSource.
font-src: fonts
frame-src: frame ulrs
img-src: images
media-src: audio & video
object-src: Flash (and other plugins)
style-src: CSS
需要特別指定的:
Content-Security-Policy: script-src 'self' https://apis.google.com
這就意味著腳本文件只能來自當(dāng)前文件或apis.google.com(谷歌的JavaScript CDN)
另一個(gè)有用的特性就是你可以自動(dòng)應(yīng)用沙盒模式 于整個(gè)站點(diǎn)。如果你想試一試效果,你可以用“Content-Security-Policy-Report-Only”頭部運(yùn)行一下,讓瀏覽器返回一個(gè)你選的URL。推薦閱讀一下HTML5Rocks上的一篇CSP的介紹。
有什么收獲?
遺憾的是IE還是只支持沙盒模式,并且用的是“X”前綴。安安卓它支持最新的4.4版。
當(dāng)然,它也不是萬能的,如果你動(dòng)態(tài)的產(chǎn)生一個(gè)JavaScript,黑客還是能把惡意JS植入你的服務(wù)器中。包含它不會(huì)產(chǎn)生危害,在Chrome、 Firefox 和 iOS都能保護(hù)用戶。
支持哪些瀏覽器?
在哪還能學(xué)到更多它的知識(shí)呢?
HTML5Rocks有不錯(cuò)的關(guān)于它的介紹。W3C規(guī)范也是個(gè)不錯(cuò)的選擇。
2. X-Frame-Options 它有什么好的呢?
它能阻止點(diǎn)擊挾持攻擊,只需一句:
X-Frame-Options: DENY
這可使瀏覽器拒絕請(qǐng)求該頁(yè)的數(shù)據(jù)。 它的值還有“SAMEORIGIN”,可允許同一源的數(shù)據(jù)。以及“ALLOW FROM http://url-here.example.com”,它可設(shè)置源(IE不支持)。
有什么收獲?
一些廠商不支持這個(gè)頭部,它可能會(huì)被整合到Content-Security-Policy 1.1。但到目前,沒人給出足夠的理由說不能使用它。
哪些瀏覽器支持?
IE | Firefox | Chrome | iOS Safari | Android Browser |
8+ | 3.6.9+ | 4.1.249+ | ? | ? |
(數(shù)據(jù)來源 Mozilla Developer Network)
在哪還能學(xué)到更多它的知識(shí)呢?
沒有多少要學(xué),想了解更多,可訪問Mozilla Developer Network 上關(guān)于此問題的文章。Coding Horror 上也有比較不錯(cuò)的文章。
3. X-Content-Type-Options 它有什么好的呢?
讓用戶上傳文件具有危險(xiǎn)性,服務(wù)上傳的文件危險(xiǎn)更大,而且很難獲得權(quán)限。
瀏覽器進(jìn)行二次猜測(cè)服務(wù)的Content-Type并不容易,即使內(nèi)容是通過MIME嗅探獲取的。
X-Content-Type-Options頭允許你更有效的告知瀏覽器你知道你在做什么,當(dāng)它的值為“nosniff”是才表明Content-Type是正確的。
GitHub上應(yīng)用了這一頭部,你也可以試試。
有什么收獲?
雖然這取決于你用戶,他們占你正保護(hù)的訪客的65%,但這個(gè)頭部只在IE和Chrome中有用。
哪些瀏覽器支持?
IE | Firefox | Chrome | iOS Safari | Android Browser |
---|---|---|---|---|
8+ | - (bug 471020) | 1+ | - | - |
FOX IT上有一篇關(guān)于MIME嗅探的優(yōu)秀文章: MIME 嗅探: 特性還是漏洞? IT Security Stackexchange上也有個(gè)專題:X-Content-Type-Options真能防止內(nèi)容嗅探攻擊嗎?
4. Strict-Transport-Security 它有什么好的呢?
我的在線銀行使用的是HTTPS來保證真實(shí)性(我確實(shí)連接到了自己的銀行)及安全性(傳輸過程進(jìn)行加密)的。然而,這還是有問題的…
當(dāng)我在地址欄中輸入”onlinebanking.example.com”時(shí),默認(rèn)使用的是簡(jiǎn)單的HTTP。只有當(dāng)服務(wù)器重定向到用戶時(shí),才使用能提供安全的HTTPS(理論上并不安全,但實(shí)際上很好用)。偏巧的是重定向的過程會(huì)給黑客提供中間人攻擊。為了解決這一問題,Strict-Transport-Security頭部應(yīng)運(yùn)而生。
HTTP的Strict-Transport-Security(HSTS)頭部強(qiáng)制瀏覽器使用HTTPS在指定的時(shí)候。比如說,如果你進(jìn)入 https://hsts.example.com,它會(huì)返回這樣的頭部:
Strict-Transport-Security: max-age=31536000; includeSubDomains
即使敲入http://hsts.example.com,瀏覽器也會(huì)自動(dòng)變成https://hsts.example.com. 只要HSTS頭部一直有效,瀏覽器就會(huì)默認(rèn)這么做。在上例的情況下,從發(fā)送頭部到得到響應(yīng),有效性可保持1年。所以,如果我2013年1月1日訪問了某網(wǎng)站,知道2014年1月1日,瀏覽器都會(huì)使用HTTPS。但如果我2013年12月31日又訪問了一次,那有效期也會(huì)變成2014年12月31日。
有什么收獲?
目前它僅適用于Chrome和Firefox,IE用戶依然存在此漏洞。然而它已經(jīng)成為了IETF的標(biāo)準(zhǔn),所以說接下IE應(yīng)該盡快地也使用Strict-Transport-Security頭部。
當(dāng)然如果使用了HTTPS,就可不必使用此頭部了,所以說為什么不用HTTPS呢?切記HTTPS不僅能保證你的內(nèi)容被加密、不被攔截,還能提供真實(shí)性。向用戶承諾內(nèi)容的確來自你。
使用HTTPS還存在著不同的爭(zhēng)論,事實(shí)上,博客和這個(gè)頭部都不是基于HTTPS的,所以爭(zhēng)論還會(huì)持續(xù)很久。
哪些瀏覽器支持?
在哪還能學(xué)到更多它的知識(shí)呢?
Mozilla Developer Network上有一篇不錯(cuò)的文章:HTTP的 Strict Transport Security頭部
如果你正在進(jìn)行Symfony2或Drupal開發(fā)
了解更多 Symfony2可以看Nelmio安全包,而Drupal 在安全組件模塊有詳細(xì)說明。閱讀它們可以使你更了解上述介紹的頭部。
殤之館: X-Requested-With
默認(rèn)情況下jQuery 發(fā)送X-Requested-With頭。它認(rèn)為這個(gè)頭部可以預(yù)防偽造跨站請(qǐng)求。然而這個(gè)頭部不會(huì)產(chǎn)生請(qǐng)求,一個(gè)用戶會(huì)話可由第三方發(fā)起,比如在瀏覽器中XMLHttpRequest就可以自定義頭部。
不幸的是,Ruby On Rails 的Ruby框架和Django Python框架的快速創(chuàng)建,雖然這能成為很好的防御手段,但它可以不完全依賴于像Java或Adobe Flash第三方插件了。
總結(jié)
使用以上HTTP頭部可幫你快速容易地預(yù)防XSS攻擊、點(diǎn)擊挾持攻擊、MIME嗅探和中間人攻擊。如果目前還沒使用,通過介紹給你,你可以在你的應(yīng)用或服務(wù)器上使用。
請(qǐng)確保用戶的安全性。
原文鏈接: Boy Baukema 翻譯: 伯樂在線 - smilesisi
相關(guān)文章
網(wǎng)站域名被劫持、網(wǎng)站dns被劫持 域名跳轉(zhuǎn)到別的網(wǎng)站的解決方法
網(wǎng)站域名被劫持,網(wǎng)站dns被劫持,域名跳轉(zhuǎn)到別的網(wǎng)站怎么解決? 出現(xiàn)網(wǎng)站域名跳轉(zhuǎn)到其他網(wǎng)站,這一現(xiàn)象很可能是域名被劫持2013-07-05- 這么多黑鏈代碼,到底那種黑鏈代碼的寫法最好呢。本尊現(xiàn)在給各位朋友一些建議。2011-06-16
公共場(chǎng)所免費(fèi)WIFI盜取機(jī)密信息的幾個(gè)案例
如今電子商務(wù)社會(huì),每個(gè)人的手機(jī)號(hào)上都綁定很多東西。比如網(wǎng)銀、支付寶、銀行卡、等很多關(guān)系到個(gè)人財(cái)產(chǎn)的東西。騙子也利用了這點(diǎn)來開始作案。下面來分享幾個(gè)案例給大家認(rèn)識(shí)2014-04-25- 網(wǎng)絡(luò)安全是一門涉及計(jì)算機(jī)、網(wǎng)絡(luò)、通訊、密碼、信息安全、應(yīng)用數(shù)學(xué)、數(shù)論、信息論等多種學(xué)科的綜合性學(xué)科,涉及面極廣,而且不斷更新和發(fā)展2013-03-20
黑客攻擊著名門戶網(wǎng)案告破 百萬網(wǎng)民瀏覽網(wǎng)站受影響
百萬網(wǎng)民瀏覽網(wǎng)站受影響 北京警方40天破案,在大連警方的協(xié)助下,成功破獲了該起案件,兩名黑客在大連落網(wǎng)2013-04-06- DDoS攻擊其實(shí)就是一種利用某種技術(shù)手段將目標(biāo)服務(wù)器與互聯(lián)網(wǎng)連接的所有通道堵死,從而造成服務(wù)器與互聯(lián)網(wǎng)失去聯(lián)系,正常訪問者無法獲取服務(wù)器上的數(shù)據(jù)。我們這樣解釋詳細(xì)很2014-08-25
- 這篇文章主要為大家介紹下BIOS和DOS中斷名相關(guān)的資料,需要的朋友可以收藏下2014-03-04
公共場(chǎng)所免費(fèi)wifi如何安全使用 警惕黑網(wǎng)
為了節(jié)約自己的移動(dòng)數(shù)據(jù)流量,很多網(wǎng)友會(huì)選擇在公共場(chǎng)所使用免費(fèi)wifi,近日,央視315晚會(huì)上曝光了免費(fèi)WiFi的安全問題,呼吁手機(jī)用戶警惕黑網(wǎng),公共場(chǎng)所免費(fèi)wifi如何安全使用2015-03-17- 這篇文章主要介紹了Mac DNS被劫持的解決辦法,需要的朋友可以參考下2015-10-08
- 隨著互聯(lián)網(wǎng)的飛速發(fā)展,網(wǎng)絡(luò)安全已經(jīng)成為最近一大熱門話題,下面小編就為大家具體的講解如何防范常見的Web攻擊,希望可以幫助到大家2016-11-02