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

时间:2011-04-01 13:25:58

标签: php mysql database encryption

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

由于

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

AES_ENCRYPTAES_DECRYPT是加密/解密字符串的简单方法,无需自己编写代码,可在MySql 5中向上提供。

请注意AES_ENCRYPT的输出是二进制字符串,需要存储在二进制数据类型的列中(最有可能是BLOB)而不是文本类型您通常用于文本数据的TEXTVARCHAR

问题是您必须将加密密钥存储在某个地方,并且您不得不让管理员不能访问它。我不知道是否可以( 的管理员?)

答案 2 :(得分:1)

事实上,您无法阻止管理员查看这些文本,因为他也能够读取加密密码并对其进行解密。

答案 3 :(得分:-1)

  1. 使用保存连接(https) 您的管理员无法获取密码 来自日志。
  2. 使用MCript加密解密 用户密码的数据。
  3. 与用户解密数据 密码。
  4. 然而,有一个很大的缺点:

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

    如果您的管理员可以访问php代码,那么破解这个代码只需几秒钟。

    唯一可行的方法是,您的管理员可以访问数据库和后端,但不能访问代码。