php - 使用 PHPmyAdmin 加密/解密 MySQL 数据库

标签 php mysql database encryption phpmyadmin

我想知道你是否可以帮助我。我一直在从事一个存储有关我的教堂志愿者信息的项目。这一切都是通过控制面板进行管理的,这很好,因为可以设置用户名、密码和权限来授予某些人使用系统的权限。然而,我们确实有一些人可以访问 cPanel 并使用 PHPmyAdmin。有没有办法对存储的所有信息进行加密,使其在 PHPmyAdmin 上无法读取,然后将其解密,以便您可以在控制面板上查看它?

我们存储姓名、地址、联系信息(例如号码和电子邮件),并可能存储到 future 的银行帐户详细信息中,并且不希望任何访问 PHPmyAdmin 的人能够读取其中的任何信息。

感谢:)

最佳答案

观察:您建议在您的系统中存储个人身份信息。如果您存储银行帐户详细信息,则入侵者将能够针对记录信息的人员进行身份盗用和银行欺诈。这是非常危险。如果我可以作为一名被任命的牧师和计算机程序员的人发言,我敦促您不要这样做。以这种方式将您的教会成员置于危险之中是不公平的。电子邮件、姓名、地址?好的。这与您发布的目录中的内容相同。但请注意 child 的姓名、性别和年龄。

无论如何,请获得教会领导层对该项目的批准。您不想为此承担全部责任。

我很欣赏您尝试让不需要知道个人信息的员工和志愿者无法看到这些信息。教会工作中有些东西是关于避免诱惑的:-),而你正在帮助它。很好。

但是:您最危险的威胁不是您的员工和志愿者,他们可以看到您的 phpMyadmin 页面。这是网络犯罪分子。如果有人破解了您的系统,他们可能会破解您的“控制面板”——您的网络应用程序。如果他们这样做,那么您是否已加密这些银行帐号并不重要。为了让您的 Web 应用程序使用该数据,它需要 key 来解密该数据。网络犯罪分子知道如何找到这些东西。 (请参阅 Matthew 10:16. 说真的。)

设置多个 MySQL 帐户,最好为每个将访问您的数据库的不同人员设置一个帐户。使用 phpMyadmin 的用户管理页面来执行此操作。 https://docs.phpmyadmin.net/en/latest/privileges.html

然后授予每个用户对其有权查看的数据库和表的访问权限。要防止用户查看表,请不要授予她对该表的 SELECT 权限。

您也可以使用普通 SQL 来完成此操作。它看起来像这样:

CREATE USER 'JackTheTeacher'@'*' IDENTIFIED BY 'secret-password';
GRANT SHOW DATABASES  ON *.* TO  'JackTheTeacher'@'*';
GRANT INSERT, UPDATE, DELETE  ON `mydb`.`students` TO 'JackTheTeacher'@'*';

CREATE USER 'SallyTreasurer'@'*' IDENTIFIED BY 'another-secret-password';
GRANT SHOW DATABASES  ON *.* TO  'SallyTreasurer'@'*';
GRANT INSERT, UPDATE, DELETE  ON `mydb`.`pledges` TO 'SallyTreasurer'@'*';
GRANT INSERT, UPDATE, DELETE  ON `mydb`.`donations` TO 'SallyTreasurer'@'*';

FLUSH PRIVILEGES;

此示例授予 Jack 在使用 phpMyAdmin 时操作 students 表的权限。它还授予 Sally 访问pledgesdonations 表的权限。这些只是向您展示如何使用细粒度 GRANT 操作的示例。

您还可以加密某些列的内容。但在这个方向上存在着一种错误的安全感,因为您的网络应用程序需要 key 来解密它使用的列,并且您的网络应用程序可能是破解系统的最简单途径。

关于php - 使用 PHPmyAdmin 加密/解密 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44101635/

相关文章:

php - 线系列图在调整大小时出现错误 - highcharts

java - mysql 数据类型 SET 的 Hibernate 注释

php - 如何使 onmouseover 在 mysql 目录中工作

php - 部署者 : Deploy from local machine without repository

php - Doctrine 2 ORM问题设置参数

mysql - 向现有表添加新列/索引的影响?

mysql - 如果我有重复的 'WHERE' 字段,如何更新 MySQL 条目?

c# - 如何更改已部署的Azure应用程序中的连接字符串

android - 如何替换(覆盖整个文件)SQLiteAssetHelper 提供的 sqlite 数据库?

database - 在 Golang 中缓存数据库结果( revel )