我正在为我工作的公司的工作申请。 我知道了,以防止SQL注入和XSS一些技巧。 我的主要问题是保持安全的敏感信息,如SSN和地址,因为公司需要,为了使1099分的形式对销售人员的税收。
我不知道如何做到这一点的一部分,但我要加密的一切,然后将其解密,当它进入MySQL数据库?
我正在为我工作的公司的工作申请。 我知道了,以防止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 query with key in it (as Wesley Murch suggests) is not a good idea. If you do:
update mytable set myfield = AES_ENCRYPT('some value', 'your secure secret key');
... and the query gets logged (slowlog for inst.) your secure secret key is captured in plain text, which should never happen. Such a query with the secret key would be also visible when you run query like SHOW PROCESSLIST
.
Next problem where to store the secure key? In PHP file? It is again plain text.
Encrypt data:
Use private/public key encryption (http://en.wikipedia.org/wiki/Public-key_cryptography). PHP has quite good support for it.
If you want to learn more, you can google "user controlled encryption" or "zero knowledge privacy".
SQL inserts / XSS:
The best protection is secure app. No doubt. If you want to secure it, you can use for inst PHP IDS to detect attacks: https://github.com/PHPIDS/PHPIDS
I have quite good experience with it.
正如评论暗示,你问一个巨大的问题。 你将需要研究一些不同的问题:
这将是很难解决所有这些问题的一个答案。 我建议在这个网站上面提到的话题进行一些搜索。