客戶端首次在服務器上登錄後獲得HMAC加密的祕密 - 但在(java腳本)客戶端上存儲祕密的最佳方式是什麼? cookie,localStorage? thxHMAC/Javascript - 在哪裏存儲祕密?
回答
那麼答案是,這取決於。 localStorage
和cookie不等效。儘管它們都可以用於在客戶端存儲信息,但它們都服務於特定的目標。 localStorage
是爲了在本地存儲應用程序的數據。它不能直接從服務器設置,也不能通過HTTP頭髮送到服務器。
你也可以看看sessionStorage。
但是,Cookie通常是通過HTTP標頭從服務器(即使存在JS API)創建的,並且它們包含到期信息。一旦設置,它們將成爲每個客戶端請求的HTTP頭部分的一部分,從而允許服務器訪問信息。
兩種方式都可能同樣安全,因爲它們都不能從另一個域訪問。但是,如果您正在傳輸安全信息,則應該通過HTTPS來完成。
best
方式很主觀。
如果您必須將其存儲在客戶端(您必須,我假設),那麼它不能安全,它不能。
把它放在一邊,best
的方式取決於你的情況。
您是否試圖以舊版瀏覽器爲目標?那麼你不能使用本地存儲。
由於我們已經從等式中移除了安全性,因此您最深入的,跨瀏覽器兼容的解決方案是將其存儲在cookie中。
這也可能是最簡單的解決方案之一,儘管肯定是最不安全的(因爲在這裏你唯一的安全形式是默默無聞的,而cookie是......不是晦澀難懂的)。
您的第二個問題首先 - 不,舊版瀏覽器不受支持。 對於JS應用程序(帶有REST後端),如果我是對的,我必須將其存儲在客戶端上。祕密應該只在第一次登錄後才傳輸一次。 (或者,如果密鑰無效) –
如果您不想試圖從當前客戶端明確隱藏此信息,而僅僅是從其他客戶端,我們可以說它是安全的。您不能從其他域訪問cookies/localStorage。 – plalx
- 1. 你在哪裏儲存祕密或環境細節?
- 2. Twitter與Oauth ASP.NET MVC,在哪裏存儲祕密令牌
- 3. 在哪裏存儲jasypt解密密碼
- 4. 應用程序的祕密在哪裏?
- 5. 放在哪裏的OAuth應用祕密
- 6. Webmin在哪裏存儲根MySQL密碼?
- 7. 運行時在哪裏存儲密碼?
- 8. SSL對稱密鑰存儲在哪裏?
- 9. Netbeans 7在哪裏存儲FTP密碼
- 10. SecKeyGeneratePair在哪裏存儲密鑰對?
- 11. laravel密碼鹽在哪裏存儲?
- 12. ModX Evolution:SMTP密碼存儲在哪裏?
- 13. 設計存儲密碼在哪裏?
- 14. Git如何決定在哪裏保存祕密令牌?
- 15. 我們在哪裏存儲密鑰/密碼/鹽進行加密?
- 16. 哪裏存儲機密信息?
- 17. 哪裏可以存儲密碼?
- 18. 可可在哪裏存儲一個祕密文件來存儲演示安裝日期
- 19. 我在哪裏使用Facebook API密鑰和API祕密
- 20. 您在哪裏/如何在Spring Boot應用程序中存儲應用程序祕密(密碼,API KEY)
- 21. 在哪裏存儲在Python
- 22. 存儲強名密鑰的密碼在哪裏?
- 23. 加密密鑰的存儲位置在哪裏?
- 24. Phonegap db加密:我應該在哪裏存儲密碼?
- 25. C#在哪裏存儲加密和解密
- 26. .NET「獨立存儲」存儲在哪裏?
- 27. 在哪裏存儲數據?
- 28. Properties.Settings.Default存儲在哪裏?
- 29. .data()在哪裏存儲值?
- 30. Express.js/Passport.js:req.user存儲在哪裏?
是不是hmac是通過密鑰哈希計算?它不是一個加密值。但通過密鑰散列數據...(一個p.s - 我會去cookie)。 localStorage不適合那樣的事情。 –
這是公鑰和私鑰的組合。用於識別用戶和私鑰的公鑰,用於生成傳輸數據的散列。 –
您不應該通過寫入將私鑰從服務器傳遞到客戶端,這使得它非常不安全。 –