|
管理服務(wù)器與客戶端之間狀態(tài)的Cookie,雖然沒有被編入標準化HTTP/1.1的RFC2616中,但在Web網(wǎng)站方面得到了廣泛的應(yīng)用。 Cookie的工作機制是用戶識別及狀態(tài)管理。Web網(wǎng)站為了管理用戶的狀態(tài)會通過Web瀏覽器,把一些數(shù)據(jù)臨時寫入用戶的計算機內(nèi)。接著當用戶訪問該Web網(wǎng)站時,可通過通信方式取回之前存放的Cookie。 調(diào)用Cookie時,由于可校驗Cookie的有效期,以及發(fā)送方的域、路徑、協(xié)議等信息,所以正規(guī)發(fā)布的Cookie內(nèi)的數(shù)據(jù)不會因來自其他Web站點和攻擊者的攻擊而泄露。 Cookie的規(guī)格標準文檔有以下4種。
目前使用最廣泛的Cookie標準卻不是RFC中定義的任何一個。而是在網(wǎng)景公司制定的標準上進行擴展后的產(chǎn)物。
Set-Cookie
當服務(wù)器準備開始管理客戶端的狀態(tài)時,會事先告知各種信息。 下面的表格列舉了Set-Cookie的字段值。
Cookie的expires屬性指定瀏覽器可發(fā)送Cookie的有效期。 當省略expires屬性時,其有效期僅限于維持瀏覽器會話(Session)時間段內(nèi)。這通常限于瀏覽器應(yīng)用程序被關(guān)閉之前。 另外,一旦Cookie從服務(wù)器端發(fā)送至客戶端,服務(wù)器端就不存在可以顯式刪除Cookie的方法。但可通過覆蓋已過期的Cookie,實現(xiàn)對客戶端Cookie的實質(zhì)性刪除操作。 path屬性Cookie的path屬性可用于限制指定Cookie的發(fā)送范圍的文件目錄。不過另有辦法可避開這項限制,看來對其作為安全機制的效果不能抱有期待。 domain屬性通過Cookie的domain屬性指定的域名可做到與結(jié)尾匹配一致。比如,當指定后,除以外,www.或www2.等都可以發(fā)送Cookie。 因此,除了針對具體指定的多個域名發(fā)送Cookie之外,不指定domain屬性顯得更安全。 secure屬性Cookie的secure屬性用于限制Web頁面僅在HTTPS安全連接時,才可以發(fā)送Cookie。 發(fā)送Cookie時,指定secure屬性的方法如下所示。
以上例子僅當在https://www./(HTTPS)安全連接的情況下才會進行Cookie的回收。也就是說,即使域名相同,http://www./(HTTP)也不會發(fā)生Cookie回收行為。 當省略secure屬性時,不論HTTP還是HTTPS,都會對Cookie進行回收。 HttpOnly屬性Cookie的HttpOnly屬性是Cookie的擴展功能,它使JavaScript腳本無法獲得Cookie。其主要目的為防止跨站腳本攻擊(Cross-site scripting,XSS)對Cookie的信息竊取。 發(fā)送指定HttpOnly屬性的Cookie的方法如下所示。
通過上述設(shè)置,通常從Web頁面內(nèi)還可以對Cookie進行讀取操作。但使用JavaScript的document.cookie就無法讀取附加HttpOnly屬性后的Cookie的內(nèi)容了。因此,也就無法在XSS中利用JavaScript劫持Cookie了。 雖然是獨立的擴展功能,但Internet Explorer 6 SP1以上版本等當下的主流瀏覽器都已經(jīng)支持該擴展了。另外順帶一提,該擴展并非是為了防止XSS而開發(fā)的。 Cookie
首部字段Cookie會告知服務(wù)器,當客戶端想獲得HTTP狀態(tài)管理支持時,就會在請求中包含從服務(wù)器接收到的Cookie。接收到多個Cookie時,同樣可以以多個Cookie形式發(fā)送。 其他首部字段HTTP首部字段是可以自行擴展的。所以在Web服務(wù)器和瀏覽器的應(yīng)用上,會出現(xiàn)各種非標準的首部字段。 接下來,我們就一些最為常用的首部字段進行說明。
X-Frame-Options
首部字段X-Frame-Options屬于HTTP響應(yīng)首部,用于控制網(wǎng)站內(nèi)容在其他Web網(wǎng)站的Frame標簽內(nèi)的顯示問題。其主要目的是為了防止點擊劫持(clickjacking)攻擊。 首部字段X-Frame-Options有以下兩個可指定的字段值。 DENY:拒絕SAMEORIGIN:僅同源域名下的頁面(Top-level-browsing-context)匹配時許可。(比如,當指定http:///sample.html頁面為SAMEORIGIN時,那么上所有頁面的frame都被允許可加載該頁面,而等其他域名的頁面就不行了) 支持該首部字段的瀏覽器有:Internet Explorer 8、Firefox3.6.9+、Chrome 4.1.249.1042+、Safari 4+和Opera 10.50+等。現(xiàn)在主流的瀏覽器都已經(jīng)支持。 能在所有的Web服務(wù)器端預(yù)先設(shè)定好X-Frame-Options字段值是最理想的狀態(tài)。 對apache2.conf的配置實例
X-XSS-Protection
首部字段X-XSS-Protection屬于HTTP響應(yīng)首部,它是針對跨站腳本攻擊(XSS)的一種對策,用于控制瀏覽器XSS防護機制的開關(guān)。 首部字段X-XSS-Protection可指定的字段值如下。
DNT
首部字段DNT屬于HTTP請求首部,其中DNT是Do Not Track的簡稱,意為拒絕個人信息被收集,是表示拒絕被精準廣告追蹤的一種方法。 首部字段DNT可指定的字段值如下。
由于首部字段DNT的功能具備有效性,所以Web服務(wù)器需要對DNT做對應(yīng)的支持。 P3P
首部字段P3P屬于HTTP響應(yīng)首部,通過利用P3P(ThePlatform for Privacy Preferences,在線隱私偏好平臺)技術(shù),可以讓Web網(wǎng)站上的個人隱私變成一種僅供程序可理解的形式,以達到保護用戶隱私的目的。 要進行P3P的設(shè)定,需按以下操作步驟進行。
有關(guān)P3P的詳細規(guī)范標準請參看下方鏈接。
|
|
|