我正在创建需要登录的网站。我有密码的加盐哈希值,我的问题是 - 在 php 中创建哈希值更好,还是在 sql 查询中创建它更好?
SQL
INSERT INTO users (USER, PASS) VALUES ("foo",SHA1( CONCAT( "salt", MD5( 123456 ) ) ) )
PHP
$pass = sha1( "salt" . md5( 123456 ) );
$link->query("INSERT INTO users (USER, PASS) VALUES ("foo","$pass");
它不仅涉及创建用户,还可以在登录时进行检查。
问题是,我听说数据库中发生的所有事情都比 php 更快,但我害怕发送带有清晰可见密码的 sql(安全原因)。
最佳答案
从技术上讲,您可以非常安全地将未加密的密码从应用程序传递到数据库服务器,即使它们位于不同的计算机上 - 都是 TCP/IP,因此可以根据需要进行加密...但是,为什么要这样做呢?在应用程序中生成哈希的开销很小(根据您正在执行的操作,它甚至可以更高效),并且提供了更大的灵 active 和易用性。
您无需创建“自己开发”的解决方案,而是可以访问 PHP 本身内预先存在的库/函数,例如 Hash它允许您选择要使用的算法。
如果您确实觉得需要获得全面的锡纸帽子,您也可以使用 AES_ENCRYPT 加密数据库中的信息。尽管不是您真正想要搜索或索引的任何内容。
关于php - 我应该使用数据库还是 php 创建哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21886319/