有没有办法将敏感用户数据存储在数据库中,这样即使服务器和数据库受到攻击,攻击者也无法读取原始数据?显然,您可以加密数据,但服务器必须能够访问密钥才能进行解密,并且会随服务器一起受到破坏。
编辑:我将使用vps托管,如linode。假设攻击者可以获得对服务器(也有数据库和源代码)的root访问权限一小时。答案 0 :(得分:2)
从管理员用户获取密钥
仅将密钥存储在服务器的内存中。仅存储器副本用于在需要时解密数据。当服务器启动时,它必须从管理员处获取密钥信息。当然,这有不同的变化。管理员可以在那一刻插入USB驱动器。管理员可以提供密码,提供对密钥在数据库或其他任何地方的另一台机器的瞬时访问。管理员可以输入密钥库文件的密码,该密码库文件将在服务器上响应控制台上的提示。在管理员登录并选择“输入密钥”选项之前,该网站将无法运行。
这使得攻击者必须在内存中找到密钥才能解密数据。
第二台计算机上的密钥
使用的第二种方法不如依赖管理员安全,但仍然有点安全。将钥匙放在网络上某处的第二台机器上。确保它没有与服务器相同的用户帐户。当服务器启动时,它必须以某种方式连接到另一台机器并获取密钥,仅将它们存储在内存中。您可以再次依靠管理员为其他计算机上的帐户提供密码,或者在Linux中使用存储密钥的SCP。确保通信安全非常重要,这样攻击者就无法在通过网络时看到密钥。
在这种情况下,攻击者必须妥协两台计算机才能从一台计算机获取数据,而从另一台计算机获取密钥。所以它比在同一台机器上安装钥匙更安全。
其他要点
您可以在网上找到所有这些以及更多内容。谷歌是你的朋友。
但请记住一些明显的安全预防措施,以便让坏人更难:
答案 1 :(得分:1)
您可以尝试使用密钥卡/ USB来保存相关的加密数据,但通常如果物理安全受到威胁,所有投注都将关闭。