簡體   English   中英

Cookie 還是本地存儲?

[英]Cookie or local storage?

背景:我有兩個應用程序前端和后端。 使用 django django django rest framework將它的后端 django 。 對於身份驗證,我使用令牌。 因此,當客戶端登錄時,它通過post從后端請求令牌。 客戶端將此令牌設置為header並將令牌保存在localStorage中。 我將令牌保存到localStorage以防止用戶在重新打開站點后發出第二個請求。 但是我寫了很多文章,其中寫到localsStorage易受攻擊並且容易受到xss攻擊。 現在我關心cookie 但我不想重寫我的后端邏輯。 我正在考慮通過js將令牌寫入cookie。

我的問題:我應該將令牌寫入cookie嗎? 或者我應該重寫我的后端應用程序並使用會話? 還是 mb 保持原樣?

cookies 和本地存儲同樣容易在客戶端被篡改:客戶端可以看到和修改兩者,它們擁有的任何(可能是惡意的)擴展也可以。 但是,如果與您網站的連接超過 HTTPS 並且他們的瀏覽器/操作系統/硬件沒有惡意窺探事物,那么 cookies 或本地存儲不應該有問題。

它們之間的主要區別在於,cookies 在每次網絡請求時都會發送到服務器,而本地存儲則保留在用戶的硬盤上,不會發送到服務器。

Cookies 可以說比本地存儲容易受到攻擊,因為如果通過未加密的連接發送 cookie,它可以被攔截 - 但本地存儲保留在客戶端的計算機上,因此它被惡意軟件攔截的可能性較小。 但是,如果連接是加密的,那么使用 cookies 就可以了。

如果您的腳本需要將令牌與請求一起發送到服務器,您可能應該使用 cookies 以便您可以在后端檢查它們。 (如果您改用本地存儲,則必須在每個請求中手動發送令牌,這仍然是可能的,但考慮到 cookies 可以在不需要您手動干預的情況下做同樣的事情,這有點不雅。)

如果您的腳本不需要隨每個請求發送令牌,那么如果您願意,請隨意使用本地存儲。 如果服務器在生成令牌后不需要查看令牌,則不要使用 cookies,因為它會無緣無故地產生不必要的開銷。

上述相同的一般邏輯適用於客戶端的任何數據。 如果服務器經常或有時需要查看它,如果數據不是太大,cookies 是一個不錯的選擇。 如果服務器永遠不需要看到它,cookies 是錯誤的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM