2016-10-02 30 views
2

在某些情況下,當我的應用程序響應404 Not Found代碼時,它也會返回帶有會話標識符的Set-Cookie指令,但沒有緩存控制或Pragma指令。這是否意味着會話標識符可以存儲在瀏覽器緩存中,這是否會影響應用程序的安全性?我不確定是否所有使用Set-Cookie的響應都應該包含緩存指令。HTTP 404未找到響應與Set-Cookie指令包含緩存控制標頭

回答

1

Cookie是否永久存儲在瀏覽器中是否受Expires and Max-Age properties控制。 Cache-Control和Pragma標題只會影響頁面內容。所以我認爲即使沒有明確的緩存頭(*,但請參閱下面的編輯),您在404頁上仍然很好。

會話Cookie應始終設置爲沒有明確的過期日期,在這種情況下,它們通常不會存儲在磁盤上,並且在用戶退出瀏覽器時將被刪除。

(請注意,有你無法控制的情況下,當從內存中這樣的數據仍然會保存在磁盤上,就像例如當用戶決定冬眠,或者計算機運行的內存,並開始切換。)

編輯(見註釋):

在這種設置cookies正常網頁的情況下,你通常有插座,以避免像Cache-control: no-cache,no-store,must-revalidate敏感信息的緩存。我認爲這固有地包括不緩存cookie響應,所以你不需要在普通頁面上明確地設置它。

那麼問題是,在404頁面上設置了什麼cookie?如果未經身份驗證的用戶下載404頁面並獲取會話cookie,則該cookie對於攻擊者無用,因爲應用程序不應受到會話固定(cookie值在登錄時會改變)。如果它是經過身份驗證的用戶,爲什麼應用程序會在404頁面上再次設置會話cookie ?如果它確實如此,你應該發送頭文件來防止緩存,這是Skipfish的一個好結果。 (實際上,您也可以爲未經驗證的用戶執行此操作,但我認爲該風險非常低)。

+0

謝謝您的回覆。我問過這個問題,因爲在這種情況下,Skipfish會返回問題_不正確的緩存指令(風險較高) - 隱式緩存的'Set-Cookie'response_。你認爲這只是假陽性結果嗎? – user187205

+0

尋找互聯網上的一些信息我資助[this](https://github.com/pintsized/ledge/issues/7)建議使用_Cache-Control:no-cache =「set-cookie」_。 – user187205

+0

我會在一分鐘內編輯答案,謝謝你指出這一點,有趣。 –