2010-10-15 162 views
4

我有一個數據庫將保存敏感數據,所以它應該在數據庫中加密。基本上敏感數據是另一個網站的憑證。所以我想用用戶密碼+鹽對它們進行加密。Rails數據庫 - 如何使用用戶密碼存儲加密數據?

要解密憑證,需要密碼。

我看到兩種方式: 在登錄時,我可以解密憑據,然後將它們存儲在會話中?那安全嗎?

OR

哈爾德的用戶將解密存儲的密碼/ IDS之前,輸入密碼再問?

我們不希望自己有任何使用存儲憑證的能力。

回答

2

爲此,我強烈推薦「Security on Rails」。這是一個棘手的話題,所以你需要花一些時間閱讀才能正確地閱讀。它們完全涵蓋了這個主題,包括如何對加密數據進行加密,單元測試以確保加密等等。

他們的示例代碼顯示瞭如何將類方法添加到ActiveRecord :: Base,以便您可以在一行代碼中對任何數據庫列進行加密。絕對是一種慣用的Rails方法。

這是一個很棒的閱讀 - 單元測試吹我走了,所以認真...去得到它。

順便說一句,當你說

我們不希望有任何能力 使用存儲的憑據自己。

你意識到,因爲你的代碼從用戶的瀏覽器接收到未加密的數據,在此之前它在磁盤加密訪問內存中的數據,或者當它是當用戶想使用該數據未加密後來。不好的人可以訪問這些數據,如果他們根據你的盒子,偷偷摸摸的東西到Ruby eval()

雖然,加密數據確實有幫助。例如,SQL注入攻擊無法獲取解密的數據。

+0

您總是可以在客戶端加密數據,並且永遠不會在服務器端處理未加密的數據。然後,攻擊者必須改變客戶端行爲以及服務器端行爲,所有人都沒有注意到(更難) – Slartibartfast 2010-10-25 04:21:50

+0

對於問題中的場景,他需要處理未加密的其他網站的憑證,以便他的網站可以代表用戶登錄其他網站。 – 2010-10-27 19:01:09

相關問題