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

Posted

技术标签:

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

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

谢谢

【问题讨论】:

阅读此处:***.com/questions/1289061/… 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

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

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

【讨论】:

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

但是有一个很大的缺点:

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

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

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

【讨论】:

以上是关于加密文本以存储在 mysql 数据库中的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

当 API 调用需要以纯文本形式发送密码时,将密码存储在数据库中的最佳方法是啥?

在MYSQL数据库中存储密码的最佳方法[重复]

在 Android 应用程序中加密大量文本数据的最佳方法?

数据库凭据以纯文本形式存储可以吗?

在我公司的 MySQL 数据库中加密客户信息的最佳方法? [关闭]

这种数据加密/存储方法安全吗? [关闭]