mysql - 如果有敏感信息,我应该在 MySQL 上加密什么?

标签 mysql encryption aes

我正在制作一个应用程序,其中存储了一些 PII(个人身份信息),例如出生日期以及姓名和一些其他字段。我想在MySQL上使用CBC使用AES_ENCRYPT加密数据,但是有一个管理员需要查看这些信息,但是如果我加密用户的信息,管理员将无法看到。我应该使用用户名加密 PII 并且让管理员无法查看用户名并使用用户名加密用户名,还是应该不加密用户名但使用用户名加密其他所有内容,从而留下一些安全风险,但允许管理员查看信息。我该怎么办?

最佳答案

一般来说,使用 AES 等对称加密对 DBMS 中的静态数据进行加密既没有必要,也不足以保护其免受攻击。

为什么?

一方面,像这样的系统中的薄弱环节通常是 Web 服务器,而不是 MySQL 服务器计算机。但 Web 服务器必须包含加密和解密数据所需的 key 。如果攻击者窃取了您的网络服务器,他就会拥有您的 key 和生成 key 的算法,因此他会窃取您的敏感数据。他还有一种非常强大的方法来找出您认为敏感的数据。

攻击者直接破坏您的 MySQL 服务器的可能性要小得多;在涉及 PII 的情况下,这些机器通常位于防火墙后面。

另一件事:您的管理员。他需要拥有 key ,而管理员是攻击者的重要目标。 (我并不是说他是黑帽子,只是说他的白帽子上有一个大红色目标。)

另一件事:它可能会给你一种错误的安全感。

(请注意,密码未加密:它们经过哈希处理。将密码与哈希密码进行比较并说“匹配”或“不匹配”很简单。但是采用哈希密码并恢复原始密码要困难得多.因此密码“加密”的论点与这种情况无关。)

我认真建议您花时间和金钱不要按照您的建议对您的 PII 进行静态加密。相反,请花费您的资源来确保您的网站安全,并确保您的 MySQL 服务器安全地位于强大的防火墙后面并且对公共(public)互联网不可见。

看看OWASP Top Ten漏洞。花时间在您的网站上与他们打交道。使用 burp scan 或 zap scan 等渗透测试工具尝试闯入。

保护您的网站就像关于两个人和熊的老笑话。

熊:咆哮。

乔:我希望我能跑赢熊。

迈克:我必须跑得比你快。

在网络安全领域,你不想成为 Joe。

关于mysql - 如果有敏感信息,我应该在 MySQL 上加密什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45514069/

相关文章:

JAVA - AES key 长度不匹配

javascript - 加密的 Cloudfront 脚本被注入(inject)到我们的站点并导致我们的日志中出现 js 错误

encryption - 存储加密密码

Python解压AES-128加密文件

iphone - iPhone 上 NSString 的 AES 加密

encryption - C# 中的 AES 加密和 CryptoJS 中的解密

mysql表重新设计思路(关系)

php sql 不工作

mysql - 如何在MySQL查询中填充缺失值

php - 带有 lat lng 和多个搜索连接的 mysql 查询