17 - 04 - 03 圖解HTTP(38)


Set-Cookie  字段的屬性:



(接上圖)

expires屬性 

Cookie的expires屬性 指定瀏覽器可發送Cookie的有效期。當省略expires屬性時,

其有效期僅限於維持瀏覽器會話(Session)時間段內。這通常限於瀏覽器應用程序被關閉之前。

另外,一旦 Cookie從服務器端發送至客戶端,服務器端就不存在可以顯式刪除Cookie的方法。

但可通過覆蓋已過期的Cookie,實現對客戶端Cookie的實質性刪除操作。


path屬性:

Cookie的 path屬性可用於限制指定 Cookie的發送範圍的文件目錄。不過另有辦法可避開這項限制,

看來對其作爲安全機制的效果不能抱有期待。


domain屬性:

通過 Cookie的domain屬性指定的域名可做到與結尾匹配一致。

比如,當指定 example.com後,除example.com以外,www.example.com/www2.example.com等都可以發送 Cookie 。

因此,除了針對具體指定的多個域名發送 Cookie之外,不指定domain屬性顯得更安全。


secure屬性 :

 Cookie的secure屬性用於限制Web頁面僅在 HTTPS安全連接時,纔可以發送Cookie 。發送 Cookie時,

指定 secure屬性的方法如下所示。

ex :  Set-Cookie: name=value; secure

以上例子僅當在 https://www.example.com/ (HTTPS)安全連接的情況下才會進行 Cookie  的回收。

也就是說,即使域名相同, http://www.example.com/ (HTTP)也不會發生 Cookie回收行爲。

當省略secure屬性時,不論HTTP還是HTTPS都會對Cookie  進行回收。


HttpOnly屬性:

Cookie的HttpOnly屬性是Cookie的擴展功能,它使JavaScript腳本無法獲得Cookie。

其主要目的爲防止跨站腳本攻擊(Cross-site scripting,XSS)對Cookie的信息竊取。

發送指定 HttpOnly屬性的Cookie的方法如下所示。

ex: Set-Cookie: name=value; HttpOnly


通過上述設置,通常從Web頁面內還可以對Cookie進行讀取操作。

但使用 JavaScript  的 document.cookie就無法讀取附加 HttpOnly屬性後的Cookie的內容了。

因此,也就無法在 XSS  中利用 JavaScript劫持Cookie了。雖然是獨立的擴展功能,

但 Internet Explorer 6 SP1以上版本等當下的主流瀏覽器都已經支持該擴展了。

另外順帶一提,該擴展並非是爲了防止 XSS  而開發的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章