php - 我应该使用数据库还是 php 创建哈希

标签 php mysql sql security hash

我正在创建需要登录的网站。我有密码的加盐哈希值,我的问题是 - 在 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/

相关文章:

php - 提交表单后生成包含详细信息的唯一页面

mysql - 根据列在结果中的位置更新列

java - 从数据库接收数据时出现空指针异常

mysql用UTF等价物替换html特殊字符

php - 从数据库PHP计算大数据

sql - Postgres : Aggregate accounts into a single identity by common email address

php - mysql_query() 显示包含的 PHP 函数的错误

php - cc 大道 php 集成不工作

javascript - jQuery 可拖动 "game"问题

sql - 使用 pgAdmin 导入文本文件