我正在爲我工作的公司提供就業申請。我有它來防止SQL注入和一些XSS技術。我的主要問題是保持敏感信息的安全,比如SSN和地址,因爲公司需要爲銷售人員製作1099個稅表。如何將敏感數據安全地存儲在MySQL數據庫中?
我不知道該怎麼做,但是我應該加密一切,然後在進入MySQL數據庫時將其解密?
我正在爲我工作的公司提供就業申請。我有它來防止SQL注入和一些XSS技術。我的主要問題是保持敏感信息的安全,比如SSN和地址,因爲公司需要爲銷售人員製作1099個稅表。如何將敏感數據安全地存儲在MySQL數據庫中?
我不知道該怎麼做,但是我應該加密一切,然後在進入MySQL數據庫時將其解密?
這是一個過於簡化的答案,並應採取與一粒鹽,因爲大多數回答了有關安全:
使用SSL無處不在。
使用安全的加密密鑰
對於加密數據的存儲,你可以使用一個BLOB
場,並使用MySQL的built in encryption functions。例如:
update mytable set myfield = AES_ENCRYPT('some value', SHA2('your secure secret key', 512));
如果你喜歡做在應用程序代碼的加密/解密,看看PHP的Mcrypt功能。
後,這絕不是一個完整的指南,但它是一個開始,比什麼都不做要好。
您可以學會與它的關鍵更多在https://security.stackexchange.com/
所以你說什麼加密它,並把加密信息在數據庫中,然後當我們需要它以某種方式解密它在一個安全的,而不是公共,單獨的網頁? – 2013-02-25 04:14:40
你應該更好地解釋加密,這非常重要,而且開發人員確保我們的安全性很好,這是我們的工作。看看[這](http://stackoverflow.com/questions/16600708/how-do-you-encrypt-and-decrypt-a-php-string/30159120#30159120)回答一個問題,他有一個很好的加密指南。 – dspacejs 2015-08-03 00:30:32
最好不要使用mcrypt,它是棄用軟件,未經過多年更新,不支持標準PKCS#7(néePKCS#5)填充,只能使用非標準的null填充,甚至不能用於二進制數據。 mcrypt有很多優秀的[bug](https://sourceforge.net/p/mcrypt/bugs/)可以追溯到2003年。相反,考慮使用[defuse](https://github.com/defuse/php-encryption),它正在維護和正確。 – zaph 2016-07-13 17:07:54
正如評論中所暗示的,您提出了一個巨大的問題。你將需要研究一些不同的問題:
在一個答案中很難解決所有問題。我建議在本網站上針對上述主題進行一些搜索。
SQL查詢(如韋斯利默奇suggests)是不是一個好主意。 如果你這樣做:
update mytable set myfield = AES_ENCRYPT('some value', 'your secure secret key');
...和查詢得到記錄(slowlog的研究所。)您的安全密鑰以純文本格式,這絕不應該發生抓獲。當您運行像SHOW PROCESSLIST
這樣的查詢時,使用密鑰的這種查詢也會顯示出來。
下一個存儲安全密鑰的問題在哪裏?在PHP文件中?這又是純文本。
加密數據:
使用私有/公共密鑰加密(http://en.wikipedia.org/wiki/Public-key_cryptography)。 PHP對它有很好的支持。
如果你想了解更多,你可以谷歌「用戶控制加密」或「零知識隱私」。
SQL插入/ XSS:
最好的保護是安全的應用程序。毫無疑問。如果你想保護它,你可以使用PHP IDS來檢測攻擊: https://github.com/PHPIDS/PHPIDS
我對它有很好的使用經驗。
如果你想要它的安全,它應該在MySQL數據庫中進行加密,而不僅僅是在傳輸過程中。 – Jon 2013-02-25 03:49:54
如果它可以被你解密,它通常可以被有權訪問你的數據庫的人解密。也許你需要聘請專業人士? – sjdaws 2013-02-25 03:50:50
這是一個非常寬泛的問題,雅各布。你能再關注一下嗎?如果您對端對端加密更感興趣(爲什麼?爲了確保機密性,以便您的用戶相信他們將數據提交給正確的實體?),然後取出其他位。你在這方面的背景是什麼?如果它幾乎沒有,那麼讓我虛心地建議你做一些脫機閱讀 - 任何可以適用於SO回答的幫助都沒有多大幫助。 [OWASP](https://www.owasp.org/index.php/Category:OWASP_Guide_Project)是一個很好的開始。 – 2013-02-25 03:51:15