2015-08-28 90 views
0

如果cookie只存儲在本地客戶端的瀏覽器上,並且絕不會通過互聯網發送到服務器,那麼Cookie是否安全?本地存儲的Cookie的安全性

編輯 - 我做一個加密文件服務,它的工作方式是用戶有兩個密碼,一個用於登錄他的賬戶,另一個用於加密和解密他們的文件。登錄後,他們會看到一個窗口,詢問他們的解密密碼。該密碼存儲在用戶瀏覽器的cookie中。從服務器發送加密的文件列表,javascript使用cookie解密(並在瀏覽器中加密一次上傳的文件,然後php在服務器上對其進行加密)。這是一種安全的做事方式還是他們更好的方式?附:我確實使用SSL,但我試圖增加更多安全性

+0

你可能想充實你的問題,並在security.stackexchange.com上提問 - 我認爲這不適合SO。 –

+0

@ Two-BitAlchemist是如此的正確。我會用1-2頁來回答這個問題,但總之,使用HTML5的本地存儲功能來存儲密鑰而不是cookie。 –

回答

0

Cookie隨每個請求一起發送。所以,如果你使用的標題上的瀏覽器設置cookie:

Set-Cookie: Password=foo 

那麼即使將圖像從您的服務器請求:

<img src="/images/bar.jpg" /> 

請求將包含被設置Cookie:

Cookie: Password=foo 

取而代之的是,HTML5 session storage is recommended。會話存儲對於每個瀏覽器選項卡都是唯一的,並在用戶離開頁面時被清除。它只能通過JavaScript讀取,並且不會爲每個請求自動發送。

此外,由於您將擁有本地攻擊者可讀的密碼,並且由於基於密碼的密鑰與密碼一樣安全,因此建議使用JavaScript PBFDF2bcrypt implementation以加強密鑰。這將使任何加密的對象難以通過暴力破解進行解密,因爲每次密碼嘗試都需要通過散列函數運行,從而大大減緩了攻擊。這也意味着,如果在客戶端上查看存儲,密碼將不會以明文形式顯示。雖然這可能是一個有爭議的問題,因爲如果攻擊者可以讀取加密密鑰(即使它被哈希),它們仍然可以解密數據,但是如果用戶在其他系統上重用了密碼,它將不能被反向工程在那裏使用。