我在一個開源的JavaScript應用程序我試圖與第三方API接口工作密鑰(特別是GitHub的)。我試圖只保留我的整個應用程序客戶端,所以我真的不會有服務器回退或存儲隱藏的文件。作爲OAuth流程的一部分,我需要提供爲我的api密鑰提供的密鑰。我不應該發佈或分享這個密鑰。隱藏在公共倉庫
我想出了以下解決方案:
- 加密密鑰利用三重DES和密碼。
- 將加密版本放到我的資源庫中。
- 當我需要通過Oauth進行身份驗證時,提示輸入密碼並恢復密鑰。
- 一旦知道,在本地存儲中存儲祕密,以避免未來的提示。
我基本上是個存儲密鑰的轉換後的版本。我想所有這些買我的是,我必須從用戶而不是完整的密鑰獲得密碼。它應該比隨機字節更容易記住。
這樣安全嗎?這不是一個超級重要的應用程序,但我想盡我所能保護我被告知不要共享的內容。有沒有比3DES更好的方式來以可逆方式加密密鑰?
結果無論如何,客戶端OAuth並不真正被github支持。他們不希望顯示密鑰。如果處理不太挑剔的apis,可能仍然有用。 – captncraig
我不太瞭解這種情況。你是否試圖隱藏用戶的github密鑰,即使他們正在運行使用密鑰的客戶端?如果是這樣,你不能安全地做到這一點。確定的用戶將始終能夠恢復該密鑰,並且從道德的角度來看,您不應該試圖隱藏存儲在其所有者機器上的信息。如果每個用戶都有自己的github密鑰,並且您只是在尋找一種更方便的方式來記住它,那麼您的解決方案就很好。 – erickson