【问题标题】:Best way of encrypting text to store in mysql database加密文本以存储在 mysql 数据库中的最佳方法
【发布时间】:2011-07-27 17:00:17
【问题描述】:

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

谢谢

【问题讨论】:

标签: php mysql database encryption


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 您打算如何存储、提取、轮换和以其他方式管理加密密钥,以使其他人无法读取加密数据?
    • @Justice:我不知道。如果没有对相关应用程序的更详细了解,就不可能提出这样的建议。
    • @Justice - 这取决于要求 - 您所说的“其他人”是指谁?如果其人员对服务器具有完全访问权限,则唯一的选择是使用客户端 (javascript) 加密。即使这样,他们也可以修改 javascript 代码以不加密数据。
    【解决方案3】:

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

    【讨论】:

    • 真的吗?仅当您存储密码本身时。如果您只存储密码哈希,管理员将无法解密文本。
    【解决方案4】:
    1. 使用保存连接 (https) 以便 您的管理员无法获取密码 来自日志。
    2. 使用 MCript 加密解密 带有用户密码的数据。
    3. 与用户一起解密数据 密码。

    但是有一个很大的缺点:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-01-25
      • 2012-09-13
      • 2012-03-07
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      • 2020-08-10
      相关资源
      最近更新 更多