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 而開發的。