我在尋找想法來驗證用戶身份,而無需通常的服務器訪問。 在客戶端驗證用戶的任何半安全方式都是可以接受的。不使用服務器進行身份驗證
我想在js文件中存儲一些加密的祕密,然後只有具有正確代碼的用戶才能夠解密它,並且正確的代碼可以輸入或存儲在cookie中或其他東西。 聽起來不錯,還是其他想法?
我在尋找想法來驗證用戶身份,而無需通常的服務器訪問。 在客戶端驗證用戶的任何半安全方式都是可以接受的。不使用服務器進行身份驗證
我想在js文件中存儲一些加密的祕密,然後只有具有正確代碼的用戶才能夠解密它,並且正確的代碼可以輸入或存儲在cookie中或其他東西。 聽起來不錯,還是其他想法?
也許你可以存儲一個密碼的散列並加密敏感的應用程序JS源代碼,以便在用戶使用正確的密鑰「驗證」時評估它?
請參閱this有關Google的JavaScript處理方法的文章。使用加密的JavaScript字符串源代碼,並且您是客戶端安全的?
通過客戶端JavaScript來看看oauth。 在谷歌搜索'僅oauth客戶端'。
例如,這 - https://developers.google.com/accounts/docs/OAuth2UserAgent
我存儲一些加密了的祕密在一個js文件,那麼只有擁有正確的代碼將能夠解密的用戶認爲,和正確的代碼被輸入或存儲在cookie中或其他東西。
你要求的絕對是可能的,但我不確定它實際上對你有用。
您需要使用密鑰導出功能,如PBDFK2(「基於密碼的密鑰導出功能2」)。用戶輸入密碼,然後KDF將密碼轉換爲密鑰。然後,使用密鑰來操作像AES這樣的強對稱密碼(並確保使用像CBC這樣的安全操作模式)。這種方法相當安全,但仍然容易受到關鍵記錄器(操作系統級和瀏覽器級)和內存狀態檢查的影響。
這裏重要的一點是,用戶必須輸入密碼,以便加密的祕密在第一位。您無法向用戶發送密碼,然後要求輸入密碼。用戶可以使用密碼來加密消息,然後讓系統稍後使用相同的密碼以供將來訪問。
或者,您可以自己選擇密碼,生成密鑰和加密數據,然後將所選密碼(以及加密數據)發送給用戶以安全記憶或存儲。
實際上,CryptoJS是支持AES和PBKDF2的JavaScript實現。
這樣做的問題是用戶可以操縱任何東西和客戶端的一切。執行客戶端身份驗證永遠不會安全。如果這些cookies被偷走並放在另一臺機器上會發生什麼? – crush
沒有服務器的身份驗證很容易。問題是「你將如何處理這種認證」。如果您要在用戶端驗證它們之後讓用戶訪問服務器端資源,那麼您的時間將會很糟糕。 –
如果您授予用戶僅在客戶端進行身份驗證的能力,任何半勝任的編碼人員都將能夠繞過任何所謂的「安全」。如果這不是真的安全性足夠滿足您的應用程序,那麼它如何執行並不重要。最佳做法是「不要這樣做。「如果你決心向前走,那麼選擇一種能讓你感覺良好的感覺,就是你認爲合適的感覺。 –