我应该加密整个数据库,还是只加密其中的字段?

时间:2018-05-29 08:26:11

标签: php mysql encryption tablespace

我们落后于确保遵守刚刚生效的新GDPR,我目前正在考虑为我们的电子商务网站加密存储在我们数据库中的数据。我意识到加密不是强制性的,但是我认为加密越少,这将是一个有用的附加安全性。

我的问题是:在静态加密整个数据库是否有任何优点/缺点,以及使用我自己的加密存储值?这是你会做的事情,还是你认为这些方法中的一种足以为个人数据提供良好的安全性?

我的理论是,在使用我们的PHP脚本存储和检索值时对这些值进行加密将保护我们,如果有人以某种方式获取我们的数据库备份 - 并且表加密将保护我们,如果有人获得对数据库的访问权限本身。

我一直在调查:Innodb Tablespace Encryption

这应该用于加密整个数据库表。然后,我会尝试使用PHP的openssl_encrypt函数手动加密发送到数据库的任何个人数据。

这里的任何建议都将不胜感激。 非常感谢提前!

1 个答案:

答案 0 :(得分:1)

我认为这里的一个好的经验法则是加密您知道以后不需要进行搜索的个人身份信息。这样可以在您的服务可用性和保护用户信息安全之间保持平衡。

例如,UserID及其电子邮件对于加密是愚蠢的。然而,用户的名字,姓氏和实际地址将是很好的候选人。您不太可能对此信息执行查找。

更高的安全性信息可能需要更深入的方法。为此,您可以从用户密码派生加密密钥,并使用该密钥加密信息。这样做的好处是,即使您的数据库服务器您的API服务器都遭到入侵,攻击者也无法检索此信息。缺点是您需要用户在需要使用此信息时随时输入密码。