2014-04-15 23 views
0

正如我們所知,具有安全屬性的cookie意味着它只是通過加密連接進行傳輸。所以我的問題是如果一個cookie可以是一個安全而不是安全的。如果是這樣, 爲什麼或爲了什麼?Cookie是否可以是安全而不是安全?什麼時候會是這樣?

+0

你能解釋一下你的問題嗎? –

+0

例如,名爲「uid」的cookie如果存在「uid」在某個時間是安全且在另一時間不安全的場景。 – wuwl

回答

1

如前所述,一個cookie可以有一個Secure flag.

如果true時,cookie僅通過瀏覽器HTTPS請求發送。

如果是false,則Cookie由瀏覽器針對HTTP HTTPS請求發送。

單純在HTTP上沒有傳輸設置。 HTTPOnly標誌只是停止它可以通過JavaScript和其他客戶端語言訪問,它不會影響其HTTP/HTTPS行爲。

因此,通過將Secure設置爲false,cookie將根據當前協議進行加密和解密傳輸。

這不建議使用,因爲如果通過HTTP連接發送cookie或被攻擊者強制發送cookie值(例如,攻擊者只需鏈接到HTTP站點的站點上的圖像標記將導致該值被泄露 - <img src="http://www.example.com/img.jpg" />)。

1

Secure和HttpOnly屬性沒有關聯的值。相反,屬性名稱的存在表示安全和HttpOnly行爲是指定的。

安全屬性旨在保持cookie通信限於加密傳輸,指導瀏覽器僅通過安全/加密連接使用cookie。如果Web服務器使用來自非安全連接的安全屬性設置cookie,則Cookie在通過中間人攻擊發送給用戶時仍可能被攔截。

HttpOnly屬性指示瀏覽器不要通過HTTP(和HTTPS)請求以外的渠道公開Cookie。 HttpOnly cookie不能通過非HTTP方法訪問,例如通過JavaScript調用(例如引用「document.cookie」),因此不能通過跨站點腳本(普遍攻擊技術)輕易竊取。其中,Facebook和Google廣泛使用HttpOnly屬性。

總之,這意味着'安全'屬性意味着它需要安全(ssl)傳輸,例如HTTPS。

這是爲了防止cookie盜用或cookie劫持。您可以看看這個wiki

您可能還想了解Cookie加密或簽名Cookie,這種方式可以讓您的Cookie免受惡意cookie修改的影響。基本上你可以在cookie的值後加一個散列值,並用它來驗證cookie的值沒有被修改。

+0

謝謝。但是我想知道的是,一段時間內安全cookie也可能是一個非安全cookie?像這樣, Set-Cookie:uid = 123456;安全 和一些時間是這樣的, Set-Cookie:uid = 123456; – wuwl