2011-04-01 59 views
6

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

感谢

+2

这里阅读:http://stackoverflow.com/questions/1289061/best-way-to-use-php-to-encrypt-and-decrypt – Chris 2011-04-01 13:28:01

回答

1

AES_ENCRYPTAES_DECRYPT简便的方法来加密/解密字符串不自己写的代码,在MySQL 5向上可用。

注意的AES_ENCRYPT输出是一个二进制字符串,它需要被存储在二进制数据类型的列(最有可能适当的人会BLOB),而不是文本类型,如TEXTVARCHAR,你会通常用于文本数据。

问题是,你将不得不存储加密密钥某处,你不知道要保持管理员访问它。我不知道这是否可能(究竟是什么究竟是什么?)

+0

你如何建议存储,拉,旋转,否则管理加密密钥,以便其他人无法读取加密数据? – yfeldblum 2011-04-01 13:30:18

+0

@Jessice:我不知道。如果没有更详细的相关应用知识,就不可能提出这样的建议。 – Jon 2011-04-01 13:31:49

+0

@正义 - 它取决于要求 - 你是指“他人”是谁?如果其人员完全访问服务器,唯一的选择是使用客户端(JavaScript)加密。例如,即便如此,他们也可以修改JavaScript代码以不加密数据。 – 2011-04-01 13:33:01

2

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

1

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

+0

+1如果他是技术人员(PHP) – 2011-04-01 13:32:28

+0

真的吗?只有当你存储密码本身。如果您只存储密码散列,则管理员将无法解密文本。 – 2011-04-01 14:15:07

-1
  1. 使用保存的连接(HTTPS),所以 你的管理员无法从日志中获取的密码 。
  2. 使用MCript进行加密,用用户密码解密 数据。
  3. 用密码解密数据与用户 。

然而,有一个很大的缺点:

你将不得不存储在明文用户密码的会议,所以你必须要小心,会话数据不存储在日志,数据库等。 ..

如果您的管理员可以访问php代码,则需要几秒钟的时间才能破解该代码。

这将工作的唯一情况是如果您的管理员可以访问数据库和后端但不是代码。

相关问题