【发布时间】:2011-07-27 17:00:17
【问题描述】:
我想知道将文本存储在数据库中并对其进行加密以防止其他人(管理员)阅读它的最佳方法。我允许用户编写(最多)纯文本段落,然后存储在数据库中。然后,此文本会在其帐户中显示回用户。这意味着一旦我加密数据并将其存储在数据库中,我就必须能够解密数据。 (我已经使用 PHP 创建了项目)
谢谢
【问题讨论】:
标签: php mysql database encryption
我想知道将文本存储在数据库中并对其进行加密以防止其他人(管理员)阅读它的最佳方法。我允许用户编写(最多)纯文本段落,然后存储在数据库中。然后,此文本会在其帐户中显示回用户。这意味着一旦我加密数据并将其存储在数据库中,我就必须能够解密数据。 (我已经使用 PHP 创建了项目)
谢谢
【问题讨论】:
标签: php mysql database encryption
您正在寻找的是MCrypt。此外,如果您希望数据真正安全,则需要使用 HTTPS 进行传输,因为一旦 PHP 脚本解密了密文(当用户访问文本时),纯文本将通过服务器的 NIC 发送出去.因此,狡猾的管理员或攻击者可以只嗅探接口上的流量并记录流量。
【讨论】:
AES_ENCRYPT 和 AES_DECRYPT 是加密/解密字符串的简单方法,无需自己编写代码,在 MySql 5 以上版本中可用。
请注意,AES_ENCRYPT 的输出是二进制字符串,它需要存储在二进制数据类型的列中(很可能是BLOB)而不是文本类型,例如TEXT或VARCHAR,通常用于文本数据。
问题是您必须将加密密钥存储在某处,并且您必须以某种方式阻止管理员访问它。我不知道这是否可能(what 的管理员到底是什么?)
【讨论】:
事实上,您无法阻止管理员查看这些文本,因为他也可以读取加密密码并对其进行解密。
【讨论】:
但是有一个很大的缺点:
您必须在会话中以明文形式存储用户密码,因此您必须注意会话数据不会存储在日志、数据库等中...
如果您的管理员可以访问 php 代码,那么破解它只需几秒钟。
唯一可行的情况是您的管理员可以访问数据库和后端,但不能访问代码。
【讨论】: