[英]Best way of encrypting text to store in mysql database
我想知道在数据库中存储文本并加密它以防止其他人(管理员)阅读它的最佳方法。 我允许用户编写(最多)纯文本段落,然后存储在数据库中。 然后,该文本将在其帐户中显示给用户。 这意味着我必须能够在加密数据并将其存储在数据库中后对数据进行解密。 (我使用PHP创建了项目)
谢谢
您正在寻找的是MCrypt 。 此外,如果您希望数据真正安全,则需要使用HTTPS进行传输,因为一旦PHP脚本解密了密文(当用户访问文本时),纯文本就会通过服务器的NIC发送出去。 因此,一个狡猾的管理员或攻击者只能嗅探界面上的流量并记录流量。
AES_ENCRYPT
和AES_DECRYPT
是加密/解密字符串的简单方法,无需自己编写代码,可在MySql 5中向上提供。
请注意, AES_ENCRYPT
的输出是一个二进制字符串,需要存储在二进制数据类型的列中(很可能是适当的一个是BLOB
)而不是通常用于文本的文本类型,如TEXT
或VARCHAR
数据。
问题是你将不得不在某处存储加密密钥,并且你必须让管理员不能访问它。 我不知道那是否可能(管理员到底是什么?)
实际上,您无法阻止管理员查看这些文本,因为他也能够读取加密密码并对其进行解密。
然而,有一个很大的缺点:
您必须在会话中以明文形式存储用户密码,因此您必须注意会话数据不存储在日志,数据库等中......
如果您的管理员可以访问php代码,那么破解这个代码只需几秒钟。
唯一可行的情况是,您的管理员可以访问数据库和后端,但不能访问代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.