[英]How can I store sensitive data securely in a MySQL database?
我正在為我工作的公司提出求職申請。 我已經有了它來防止SQL注入和一些XSS技術。 我的主要問題是保護敏感信息,例如SSN和地址,因為公司需要為銷售人員的稅收制作1099個表格。
我不知道如何做這個部分,但是我應該加密一切,然后當它進入MySQL數據庫時解密它?
這是一個過於簡化的答案,應該與大家一起考慮,因為大多數關於安全性的答案:
到處使用SSL。
使用安全加密密鑰
對於加密數據的存儲,您可以使用BLOB
字段,並使用MySQL的內置加密功能 。 例:
update mytable set myfield = AES_ENCRYPT('some value', SHA2('your secure secret key', 512));
如果您更喜歡在應用程序代碼中進行加密/解密,請查看PHP的Mcrypt函數。
這絕不是一個完整的指南,但它是一個開始,而不是什么都不做。
您可以在https://security.stackexchange.com/上了解更多信息。
帶有密鑰的SQL查詢(正如Wesley Murch 建議的那樣 )並不是一個好主意。 如果你這樣做:
update mytable set myfield = AES_ENCRYPT('some value', 'your secure secret key');
...並且查詢被記錄(inst的slowlog)你的安全密鑰以純文本形式捕獲,這絕不應該發生。 當您運行SHOW PROCESSLIST
類的查詢時,使用密鑰的這種查詢也是可見的。
下一個問題在哪里存儲安全密鑰? 在PHP文件中? 它再次是純文本。
加密數據:
使用私鑰/公鑰加密( http://en.wikipedia.org/wiki/Public-key_cryptography )。 PHP對它有很好的支持。
如果您想了解更多信息,可以谷歌“用戶控制加密”或“零知識隱私”。
SQL插入/ XSS:
最好的保護是安全的應用程序。 毫無疑問。 如果你想保護它,你可以使用PHP PHP IDS來檢測攻擊: https : //github.com/PHPIDS/PHPIDS
我有很好的經驗。
正如評論中暗示的那樣,你提出了一個很大的問題。 您將需要研究一些單獨的問題:
在一個答案中很難解決所有這些問題。 我建議在本網站上進行一些搜索,以了解上述主題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.