具有不同用户编号访问权限的加密 MySQL 数据
Encrypted MySQL data with varying user number access
我正在想办法将个人数据存储在 MySQL 数据库中,该数据库可通过 PHP 应用程序访问,并允许多个用户使用不同的密码访问和添加和删除用户的能力。
我最初的想法是使用AES加密数据库中的数据,以便可以解密和读取,但我不确定如何允许多个用户使用不同的密码访问它,因为只能据我所知是一个解密密钥。
我唯一的想法是为用户设置一个正常的登录系统,这样他们就可以添加和删除,但将解密密码存储在服务器上,这样用户就看不到了。将解密密码存储在服务器上的想法似乎不安全,所以我正在寻找更好的解决方案。
我确定这是许多其他人遇到过的问题,我已经四处搜索,但除非我误解了事情,否则我发现的唯一解决方案适用于一定数量的用户,而不是在以下情况下添加和删除用户。
或者我解决这个问题的方式不是最好的,是否有更好的方法来解决这个问题?
还要定义我要防范的问题。如果服务器被黑客攻击和数据库被盗,小偷将无法读取数据并阻止不再被允许查看数据的人访问数据以及添加新用户。
感谢您的帮助,
尼尔.
是的,密钥(解密数据的密码)必须存储在服务器上。
不幸的是,没有办法解决这个问题。
不过,有不同的方法可以做到这一点。
您可以将其以纯文本文件的形式存储在用户访问区域之外的某个文件夹中,只有 root
系统用户才能获取它。
您可以将其存储在不同的、单独的数据库中,使用单独的一组密钥。
您可以让您的脚本从服务器上的其他 script/app 获取密钥(或第二个数据库凭据),从而提高反透明性。如果有人可以访问第一个脚本,他可能无法访问另一个脚本。
最后,您可以将它存储在其他地方,在您的网络深处 — 这是最复杂但最安全的东西,称为 KMS
- Key Management Server
。
实际上,KMS 不一定是云服务或昂贵的企业解决方案(尽管它是最安全的方式)。它可以只是 "war zone"(独立网络)之外的另一台服务器,它只将密钥 "tells" 存储到受信任的服务器。
我可以写一本约 300 页的关于管理密钥的书,因为我监督了许多符合 PCI DDS3 安全标准的非常敏感的数据项目。您可以 google 换 key management
并尝试找到一些简单的教程和方案。
我正在想办法将个人数据存储在 MySQL 数据库中,该数据库可通过 PHP 应用程序访问,并允许多个用户使用不同的密码访问和添加和删除用户的能力。
我最初的想法是使用AES加密数据库中的数据,以便可以解密和读取,但我不确定如何允许多个用户使用不同的密码访问它,因为只能据我所知是一个解密密钥。
我唯一的想法是为用户设置一个正常的登录系统,这样他们就可以添加和删除,但将解密密码存储在服务器上,这样用户就看不到了。将解密密码存储在服务器上的想法似乎不安全,所以我正在寻找更好的解决方案。
我确定这是许多其他人遇到过的问题,我已经四处搜索,但除非我误解了事情,否则我发现的唯一解决方案适用于一定数量的用户,而不是在以下情况下添加和删除用户。
或者我解决这个问题的方式不是最好的,是否有更好的方法来解决这个问题?
还要定义我要防范的问题。如果服务器被黑客攻击和数据库被盗,小偷将无法读取数据并阻止不再被允许查看数据的人访问数据以及添加新用户。
感谢您的帮助, 尼尔.
是的,密钥(解密数据的密码)必须存储在服务器上。
不幸的是,没有办法解决这个问题。
不过,有不同的方法可以做到这一点。
您可以将其以纯文本文件的形式存储在用户访问区域之外的某个文件夹中,只有 root
系统用户才能获取它。
您可以将其存储在不同的、单独的数据库中,使用单独的一组密钥。
您可以让您的脚本从服务器上的其他 script/app 获取密钥(或第二个数据库凭据),从而提高反透明性。如果有人可以访问第一个脚本,他可能无法访问另一个脚本。
最后,您可以将它存储在其他地方,在您的网络深处 — 这是最复杂但最安全的东西,称为 KMS
- Key Management Server
。
实际上,KMS 不一定是云服务或昂贵的企业解决方案(尽管它是最安全的方式)。它可以只是 "war zone"(独立网络)之外的另一台服务器,它只将密钥 "tells" 存储到受信任的服务器。
我可以写一本约 300 页的关于管理密钥的书,因为我监督了许多符合 PCI DDS3 安全标准的非常敏感的数据项目。您可以 google 换 key management
并尝试找到一些简单的教程和方案。