如何在Rails應用程序中存儲用戶的API密鑰?請注意,我正在談論成爲資源提供者,即API密鑰是我的服務。在Rails 3應用程序中安全地存儲API密鑰
比方說,我們有一些資源,我們有1000個API密鑰給它,它允許用戶訪問該資源。
天真的方法是將其存儲在純文本,但如果數據庫被攻破 - 所有API密鑰都不見了。
聰明的方法是存儲散列和醃製,但那就意味着我會是這樣的:
ApiKeys.where(resource: '....').each do { |key| key.password == params[:api_key] }
這是非常耗時的(1000散列比較)。
我不能做搜索,因爲哈希加鹽。
谷歌對這個問題保持沉默。
關於如何更有效地實施它的任何想法?
http://pastebin.com/NKhaCnif 基本上,你不能搜索,除非你每次使用相同的鹽(否則 - 默認情況下 - 相同的密碼每次生成不同的哈希) - 這是問題的關鍵。如果鹽是相同的 - 這是不安全的。不,我不打算向用戶顯示API密鑰。 –
我想你可能會被卡住。 :(希望有一個比我更瞭解的人可以一起來展示我們兩個。 – girasquid