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

如果存在敏感信息,我应该在MySQL上加密什么?,mysql,encryption,aes,Mysql,Encryption,Aes,我正在制作一个应用程序,其中存储了一些PII个人识别信息,例如出生日期、姓名和一些其他字段。我想在MySQL上使用CBC使用AES_encrypt对数据进行加密,但是管理员需要查看信息,但是如果我加密用户信息,管理员将无法查看。我应该用用户名加密PII,让管理员不能用用户名查看和加密用户名,还是应该不加密用户名,但用用户名加密其他所有内容,留下一些安全风险,但允许管理员查看信息。我该怎么办?一般来说,在DBMS中使用对称加密(如AES)对静态数据进行加密既不必要,也不足以保护数据免受攻击 为什么

我正在制作一个应用程序,其中存储了一些PII个人识别信息,例如出生日期、姓名和一些其他字段。我想在MySQL上使用CBC使用AES_encrypt对数据进行加密,但是管理员需要查看信息,但是如果我加密用户信息,管理员将无法查看。我应该用用户名加密PII,让管理员不能用用户名查看和加密用户名,还是应该不加密用户名,但用用户名加密其他所有内容,留下一些安全风险,但允许管理员查看信息。我该怎么办?

一般来说,在DBMS中使用对称加密(如AES)对静态数据进行加密既不必要,也不足以保护数据免受攻击

为什么?

首先,像这样的系统中的薄弱环节通常是web服务器,而不是MySQL服务器。但是web服务器必须包含加密和解密数据所需的密钥。如果攻击者盗用了您的web服务器,他会占用您的密钥和生成密钥的算法,因此会盗用您的敏感数据。他也有一个非常强大的方法来找出你认为哪些数据是敏感的

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

还有一件事:你的管理员。他需要拥有密钥,管理员是攻击者的目标。我不是说他是一顶黑帽子,只是说他的白帽子上有一个大大的红色靶子

另一件事:它可能给你一种虚假的安全感

请注意,密码不是加密的:它们是散列的。将密码与散列密码进行比较并说出匹配或不匹配很简单。但是使用散列密码并恢复原始密码要困难得多。因此,密码加密的论点与这种情况无关

我郑重建议你不要像你建议的那样在休息时把时间和金钱花在加密你的PII上。取而代之的是,花你的资源来确保你的网站是安全的,并且确保你的MySQL服务器在一个强大的防火墙后面是安全的,并且对公共互联网是不可见的

看看这些漏洞。花时间在你的网站上处理这些问题。使用渗透测试工具,如burp scan或zap scan,尝试闯入

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

熊:吼叫

乔:我希望我能跑得比熊快

迈克:我只是想跑得比你快

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