我正在编写一个使用PHP + MySQL的web应用程序。我知道PHP和MySQL都可以执行数据加密。我还读到,在PHP级别加密数据在安全性方面更为可取。但是现在我面临这个问题:我想加密一些用户数据的地址字段。但是在使用PHP编写的网页中,我想支持地址字段的部分字符串匹配。我目前的解决方案是加密MySQL级别的数据,然后执行如下搜索:
// PHP code for inserting data into database
mysql_query("INSERT INTO test VALUES ('', AES_ENCRYPT('" . $addr . "', UNHEX('" . $hexstring . "')))", $link);
// PHP code for partial string matching
mysql_query("SELECT * FROM test WHERE AES_DECRYPT(address, UNHEX('" . $hexstring . "')) like '%Street%'", $link);是否有更安全的方法在PHP级别而不是MySQL级别执行加密?我能想到的是检索所有记录,解密PHP中的数据并执行匹配,但这将非常缓慢。AES不是必须的,只要它足够安全,任何加密/解密方法都是可以的。
发布于 2017-12-29 22:51:39
我想加密一些用户数据的地址字段。但是在使用PHP编写的网页中,我想支持地址字段的部分字符串匹配。
这是加密数据库的困难所在。你必须在两者之一中做出选择:
如果您希望采用后一种方法(我愿意),则这个过程有些简单:
123 Main Street,=>,123m,等等)。hash_hmac()或hash_pbkdf2() )。当然,如果您的加密密钥存储在与数据库服务器相同的硬件上,所有这些都是徒劳的。能够访问数据库(例如SQL注入)的攻击者可以逃到文件系统并窃取密钥,除非the服务器和数据库位于单独的硬件上。
https://stackoverflow.com/questions/22497427
复制相似问题