我已经搜索了几次,但在这件事上只提出了不明确的答案。
我正在开发一个存储敏感信息(中型文本)的Web应用程序,并且该网站本身托管在安全的Web托管提供商上。但我想知道,在MySQL中存储这些敏感文本的最佳方法是什么,而不必担心对数据库的不必要的访问(例如来自phpMyAdmin),并且仍然能够代表用户自己对这些信息执行操作(如生成图表)并创建pdfs)。
谢谢,对不起我的英语。
答案 0 :(得分:4)
如果您不控制服务器,则完全没有安全性。
如果这还不够好,你可以考虑加密。但是,你必须在某个地方存储密钥,现在你回到了mysql密码的起点。
答案 1 :(得分:3)
一种选择是使用MySQL的内置加密,请参阅Encryption and Compression Functions。另一个主要选项是使用二进制字段并在应用程序中进行加密,例如使用AES。
如果将密钥存储在服务器上,则任何有权访问服务器和数据库的人都可以解密数据。如果这也是一个问题,那么你需要考虑如何从用户那里获取密钥。这可能很难以既安全又方便的方式进行。
答案 2 :(得分:2)
MIT设计了一个名为Cryptdb的系统。 Cryptdb可以根据数据所有者密码加密数据,甚至管理员都无法访问真实数据。 该团队表示,phpBB的开销为14%!
答案 3 :(得分:1)
您可以使用mysql encode / decode
加密数据库字段答案 4 :(得分:1)
您应该锁定MySQL用户帐户。考虑限制您的webapp本身可以做什么。只为数据库提供最低限度的必要权限,并考虑创建存储过程以进一步确保它只能访问它所需的内容而不是其他内容。
如果您不信任您的托管服务提供商,那么您至少需要将数据库移动到您可以信任的地方。这进一步意味着您需要确保与数据库的连接是安全的(SSL)。
您应该加密数据。不要试图自己加密,正如@WhiteFang34所说,使用内置加密。