2016-06-01 194 views
0

我對加密技術並不熟悉,所以請耐心等待。我正在研究需要將敏感數據存儲在數據庫中的應用程序。此信息;但是,需要有適當證書的人才能訪問(所以哈希不會起作用)。用PHP和MySQL存儲敏感數據

數據從PHP表單收集。我的想法是使用準備好的SQL查詢和MySQL的AES_ENCRYPT函數將密鑰存儲在數據庫中。這是安全的(如果密鑰是安全的 - 我的下一篇文章的重點)還是與這種方法相關的風險?

其次,你會如何建議生成和存儲密鑰?問題是需要訪問這些敏感數據的用戶不是任何形式的IT專家 - 她只是不熟悉交易工具。如果我只需要訪問數據,這可能不會太困難,但我該如何確保密鑰的安全性,同時允許沒有數據庫經驗的用戶輕鬆訪問它?

非常感謝。

+0

您需要繪製出所有這些數據如何來回移動的圖表。 AES是一個對稱密鑰解決方案。這些密鑰需要供各方使用(加密,解密)。通常稱爲祕密密鑰。我不太確定如果它需要從服務器傳遞到遠在千里之外的客戶端,它們之間有數十個服務器中繼器以及它們自己的存儲技術(用戶,他們的存儲)。即使有安全通道。 PKI解決了這個問題。 ala RSA類比。一個公鑰對。沒有問題交給新手。 – Drew

+0

@KellyMarchewa你需要定義安全級別,那就是你保護誰。用戶將如何在本地或通過Internet訪問數據?他們將如何認證?如何保護服務器,是連接到互聯網的數據庫服務器,是使用服務器的雙因素身份驗證,它存在數據訪問限制,日常審查的良好日誌記錄等。 – zaph

+0

我對「外部',那就是黑客,而不是內部的任何人。身份驗證可能只是一個密碼。用戶將通過託管在由Web主機(GoDaddy)提供的遠程服務器上的數據庫訪問數據。我不完全確定服務器上的安全措施。我希望這有點多。謝謝! – KellyMarchewa

回答

0

如果您存儲打開的密鑰,您還可以存儲明文數據,因爲加密數據與密鑰實際上是明文數據。好的,將數據和密鑰存儲在不同的系統上可以提高安全性,但這並不安全。顯然你需要通過SSL從用戶那裏得到這個祕密。這可能是解鎖加密密鑰的密碼。

問題是需要訪問敏感數據的用戶不是任何形式的IT專家。

這意味着用戶不會樂於直接處理密鑰對。因此,帶有密碼的替代方案應該是一個合理的妥協。不過,您應該執行高質量的密碼來避免輕鬆的暴力攻擊。

+0

其實安全就是要增加工作因素來應對威脅。例如:如果需要防範空閒的好奇只是加密可能就足夠了。保護資金充足的政府是另一個極端。 – zaph

0

您需要了解SQL注入攻擊。見Little Bobby Tables

您需要使用雙因素身份驗證才能登錄服務器。

您需要使用HTTPS。您需要將密鑰存儲在http目錄之上。

如果加密時沒有很好的理解,最好使用MySQL的AES_ENCRYPT,那麼安全加密很難正確使用。

這些是最低限度,不會防止合理的熟練的攻擊者。