2008-09-11 95 views
9

我將要實施PHP/mySQL設置來存儲信用卡信息。如何保持mySQL數據庫安全?

好像AES_ENCRYPT/AES_DECRYPT是要走的路,

,但我仍然感到困惑的一點:

如何保持加密密鑰的安全?

將它硬連線到我的PHP腳本(它將與db一樣位於同一臺服務器上)似乎是一個主要的安全漏洞。

什麼是「最佳實踐」解決方案?

回答

15

你應該長時間思考,你是否真的需要保持CC#。如果你沒有很好的理由,不要!每隔一週你就會聽到一些公司被盜用和CC#被盜。所有這些公司都犯了一個致命的缺陷 - 他們保留了太多的信息。保持CC#直到事務清除。之後,刪除它。

就保護服務器而言,最好的方法是保護硬件並使用內部系統套接字連接到MySQL,並確保阻止任何網絡訪問MySQL服務器。確保你使用的是系統權限和MySQL權限,以便根據需要進行訪問。對於某些腳本,您可能會考慮只寫身份驗證。真的沒有加密方法是萬無一失的(因爲你總是需要解密,因此必須存儲密鑰)。這並不是說您不應該 - 您可以將密鑰存儲在一個位置,並且如果檢測到系統泄露,則可以銷燬該文件並使數據無用。

+0

賓果 - 如果可能的話,不要存儲信用卡數據。處理和丟棄,並讓PayPal等服務處理重複交易。 – ceejayoz 2008-09-11 01:58:21

0

我同意,但不要cc,如果你不需要。但是,如果你真的有,請確保它的文件不能在網上訪問。你可以編寫一個返回鍵的二進制文件。這樣它就不會以明文形式存儲。但是,如果你的服務器妥協,它仍然很容易得到它。

0

您需要的安全性取決於您的應用程序。例如,如果cc#將被使用的唯一時間是用戶登錄時(瘦在線商店類型場景),那麼您可以使用用戶的純文本密碼的哈希加密cc#用戶鹽,以及專用的cc#鹽。不要永久保存這個值。

由於您沒有存儲此值,因此只有在用戶輸入密碼登錄時才能獲取此值,只需確保您具有良好的會話過期和垃圾收集策略即可。

如果這種情況不適用於您,請詳細描述您的情況,以便我們提供更合適的答案。

3

MySQL,您可以通過六個簡單的步驟來保護您的敏感數據。

步驟1:在授權表中刪除通配符

第2步:要求使用安全密碼

注意:使用MySQL的「--secure-auth的」選項,以防止利用舊的,不太安全的MySQL密碼格式。

步驟3:檢查配置文件的權限

步驟4:加密的客戶端 - 服務器傳輸

步驟5:禁用遠程訪問

步驟6:主動監控MySQL的訪問日誌

安全工具