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

标签 php mysql encryption tablespace

<分区>

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

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

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

我一直在调查这个:Innodb Tablespace Encryption

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

如有任何建议,我们将不胜感激。 非常感谢!

最佳答案

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

例如,用户 ID 和他们的电子邮件加密起来很愚蠢。然而,用户的名字、姓氏和实际地址将是很好的候选者。您不太可能对该信息执行查找。

更高的安全性信息可能需要更深入的方法。为此,您可以从用户密码中导出加密 key ,并使用该 key 来加密信息。这样做的好处是即使您的数据库服务器您的 API 服务器都受到威胁,攻击者也无法检索此信息。缺点是您需要用户在需要使用此信息的任何时候输入他们的密码。

关于php - 我应该加密整个数据库,还是只加密其中的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50579646/

相关文章:

php - 如何在PHP中密码保护pdf

objective-c - Core Data 持久存储保护

java - 保护音乐文件 - 文件系统

iphone - 我如何使用生成的 RSA 公钥以及如何在 iOS 中加密

javascript - 按 php 变量下拉列表中的变量排序

php - Yii 和 cron 作业

php - 如何根据与现有记录匹配的单个字段值覆盖表中的单个 MySQL 记录?

PHP MySql Select 语句不工作...有什么建议吗?

MySQL 包含来自 Cygwin gcc 的文件

mysql - SQL 中不同的多列