Php 将文本加密存储在mysql数据库中的最佳方法

Php 将文本加密存储在mysql数据库中的最佳方法,php,mysql,database,encryption,Php,Mysql,Database,Encryption,我想知道在数据库中存储文本并对其进行加密以防止其他人(管理员)读取文本的最佳方法。我允许用户编写(最多)段纯文本,然后存储在数据库中。然后,此文本将显示回用户帐户中。这意味着,一旦我对数据进行加密并将其存储在数据库中,我就必须能够对数据进行解密。 (我已经用PHP创建了这个项目) 谢谢和AES_DECRYPT是加密/解密字符串的简单方法,无需自己编写代码,可在MySql 5上获得 请注意,AES\u ENCRYPT的输出是一个二进制字符串,需要存储在二进制数据类型的列中(最合适的是BLOB),而

我想知道在数据库中存储文本并对其进行加密以防止其他人(管理员)读取文本的最佳方法。我允许用户编写(最多)段纯文本,然后存储在数据库中。然后,此文本将显示回用户帐户中。这意味着,一旦我对数据进行加密并将其存储在数据库中,我就必须能够对数据进行解密。 (我已经用PHP创建了这个项目)

谢谢

AES_DECRYPT
是加密/解密字符串的简单方法,无需自己编写代码,可在MySql 5上获得

请注意,
AES\u ENCRYPT
的输出是一个二进制字符串,需要存储在二进制数据类型的列中(最合适的是
BLOB
),而不是通常用于文本数据的文本类型,如
text
VARCHAR


问题是您必须将加密密钥存储在某个地方,并且您必须以某种方式阻止管理员访问它。我不知道这是否可能(具体是什么管理员?

你要找的是什么。此外,如果您希望数据真正安全,则需要使用HTTPS进行传输,因为一旦PHP脚本解密了密码文本(当用户访问文本时),纯文本将通过服务器的NIC发送出去。因此,狡猾的管理员或攻击者只需嗅探接口上的流量并记录流量。

事实上,您无法阻止管理员查看这些文本,因为他也可以读取加密密码并解密它们

  • 使用保存连接(https)以便 您的管理员无法获取密码 从日志中
  • 使用mccript对 具有用户密码的数据
  • 与用户一起解密数据 密码
  • 然而,有一个很大的缺点:

    您必须在会话中以明文形式存储用户密码,因此您必须注意会话数据不会存储在日志、数据库等中

    如果你的管理员有权访问php代码,那么破解它只需几秒钟


    如果管理员可以访问数据库和后端,但不能访问代码,那么这将是唯一可行的情况

    阅读这里:您打算如何存储、提取、旋转和以其他方式管理加密密钥,使其他人无法读取加密数据?@Justice:我不知道。如果没有更详细的应用知识,就不可能提出这样的建议。@Justice-这取决于要求-你所说的“其他人”是指谁?如果它的用户能够完全访问服务器,唯一的选择就是使用客户端(javascript)加密。即使这样,他们也可以修改javascript代码,比如不加密数据。真的吗?仅当您存储密码本身时。如果您只存储密码哈希,管理员将无法解密文本。