IMB*_*IMB 5 php mysql encryption encryption-symmetric
I am encrypting using PHP before saving the encrypted data to MySQL. I am convinced this is a better way in the long run vs using MySQL's AES_* functions.
My question now is, is there an efficient way to search encrypted data aside from storing a searchable hashed version of the data? E.g., Two columns per data: first_name_encrypted, first_name_hashed.
$hashed_search = myhash('John');
$q = "SELECT * FROM table WHERE first_name_hashed = '$hashed_search'";
Run Code Online (Sandbox Code Playgroud)
This is what I do now, is there a better way?
Joe*_*bna -1
通常,您不应该对存储在需要搜索的数据库中的数据进行加密。
在您给出的示例中,了解您为什么按名字获取用户的上下文以及您的整体安全问题是什么会很有帮助......
$hashed_search = myhash('John');
$q = 'SELECT * FROM table WHERE first_name_hashed = '.$hashed_search;
Run Code Online (Sandbox Code Playgroud)
这是一个网络应用程序吗?您主要关心的是用户个人信息在网络上的未加密传输?在用户的 PC 和服务器之间发送数据时使用加密连接(例如“https”)。
您是否担心有人侵入服务器并下载数据库的副本?考虑限制您存储的个人识别信息的数量。您真的需要存储用户的真实姓名吗?
假设您确实需要存储有关用户的个人识别信息,请考虑使用其他方法从数据库中获取他们的记录,而不是使用个人识别部分(即不要通过“first_name”获取它们)。考虑通过 ID 或与真实姓名无关的用户名来获取用户。这将允许您利用索引来快速检索记录,并且您可以根据自己的喜好加密他们的个人信息(名字、姓氏、电子邮件、电话号码等)。
如果这对您没有帮助,也许可以提供更多有关您想要实现的目标及其原因的背景信息。
TLDR:尝试搜索加密数据是一个坏主意。想想你想避免什么问题并提出替代解决方案。
归档时间: |
|
查看次数: |
7016 次 |
最近记录: |