2011-11-19 42 views
6

我在數據庫中存儲了Paswords和個人數據。加密這些保護值的最強有效方法是什麼?數據庫的最佳+最強加密方法

此外,數據庫中信用卡信息加密的最佳方法是什麼?或者我應該使用別的東西來存儲信用卡信息,而不是MySQL數據庫?

謝謝。

+7

永遠不要存儲信用卡信息。 –

+3

@ShaktiSingh那麼像Amazon和Like這樣的公司如何存儲它們呢? –

+2

閱讀:http://stackoverflow.com/questions/3002189/best-practices-to-store-creditcard-information-into-database –

回答

11

我認爲在SQL中存儲任何東西都很好,只是先加密它。如果您需要以某種方式識別數據(例如使用數據庫條目的唯一鍵),請創建一個隨機生成的字符串或安全哈希,並將其存儲在加密數據的旁邊。

這可能是最好的堅持一些經過試驗和測試的東西。由於它是一個數據庫(可能用於計費系統),因此可以快速檢索。因此,請遠離非對稱加密 - 如果您需要與某人共享這些加密密鑰,則只應使用這種加密方法來加密對稱密鑰。

AES的某些特定強度(比如256位)應該沒問題。我很樂意知道我們以這種方式獲得的個人信息。

在存儲用戶密碼方面,通常的做法是生成一個salt(隨機字符串),然後使用安全哈希算法(RIPEMD,SHA1,MD5)對與此鹽結合的用戶密碼進行哈希處理。

這可以防止預先計算的字典破解者恢復密碼,因爲它需要處理所有的隨機鹽。

不要對密碼進行加密,只對它們進行哈希處理。沒有必要能夠以明文方式恢復密碼,它只會通過這一個主密鑰使系統變得脆弱。不要使用用戶可以選擇的密鑰對用戶數據進行加密,這會在密鑰丟失的情況下使數據無法恢復。爲用戶在丟失密碼的情況下恢復對其帳戶的訪問提供常用方法。

如果你真的需要隱藏用戶名,也許你應該問自己關於你正在使用的數據架構。一般來說,個人數據,尤其是賬單數據不應該存儲在明顯的位置,只能由可信方訪問。這些可信任方將需要查看用戶名和信息的內容,因此加密可能是不必要的。

如果您在開放的互聯網上傳輸用戶信息,請對其進行加密。

如果您擔心數據庫服務器上用戶信息的安全性,請考慮與雲或數據託管提供商合作,他們可以爲您的服務器提供一些額外的物理安全性。

加密只是強健安全策略的一部分。特別關注建立一個安全的環境來進行你的商業活動的人爲因素。在需要了解基礎的情況下提供對敏感資源的訪問。如果所有密鑰都丟失,請確保您安排備份或某些數據恢復方式。

+1

+1尼斯徹底的回答 –

+0

[nope](http://stackoverflow.com/users/1283048/nope)的評論:「'所以遠離非對稱加密 - 你應該只用來加密對稱密鑰if你需要與他人分享。「 - 沒有任何意義 - 爲什麼有人會加密除TLS以外的KEYS?當然,非對稱加密有其(很多)用途 - 實際上,應該避免使用對稱加密方法,因爲它們在設計中易受攻擊,如果傳輸流未加密;知道具有非對稱加密的公共密鑰不會授予解密能力。「 –

+0

@PeterO。它確實是有道理的......緩慢的,不對稱的公鑰加密方法被用來加密對稱密鑰的交換。快速的對稱密鑰加密又被用於加密數據流。 – spamsink

1

請注意,加密不是您在存儲信用卡數據時需要擔心的唯一事情。還有嚴格的審計要求和其他一系列問題(如果您不熟悉,請參閱PCI website)。

雖然您可以設法達到PCI合規性,但如果您不熟悉必要的安全措施,則可以承擔巨大責任。如果您的系統遭到違反或您被發現違規,您將面臨嚴重罰款。

檢查支付提供商,例如Authorize.net尋找替代解決方案。具體而言,他們的Customer Information Manager產品值得研究,因爲他們會在您的服務器上存儲安全數據,例如信用卡信息。

相關問題