php - 如何将登录脚本中的安全性从 MD5 更新为更安全的内容?

标签 php security hash authentication password-hash

<分区>

我在数据库中有一个带有 salt 的 PHP 登录脚本,但在我的注册脚本中我看到:

$qry = "INSERT INTO accounts(username, firstname, lastname, password) " . 
VALUES('$username','$fname','$lname','" . md5($_POST['password']) . "')";

对于登录:

$qry="SELECT * FROM accounts WHERE username='$username' AND password='" .
md5($_POST['password']) . "'";

是否有一些代码可以替代 MD5?更安全的东西?

我听说过 SHA1 之类的东西。

最佳答案

简答

使用 bcrypt 而不是 md5sha1

更长的答案

使用 crypt()很难。 PHP 5.5 版中有一个新的 PHP 密码哈希 API,您可以在这里阅读:

https://gist.github.com/nikic/3707231

它使用bcrypt 使整个过程变得非常简单。当然 php 5.5 还没有准备好,所以与此同时,现在有一个库可以提供这个新的 API:

https://github.com/ircmaxell/password_compat

编辑:查看此主题以获得关于该主题的更详尽的答案:

How do you use bcrypt for hashing passwords in PHP?

关于php - 如何将登录脚本中的安全性从 MD5 更新为更安全的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16327865/

相关文章:

php - $.ajax JQuery 进度条

java - ZooKeeper 摘要式身份验证 - 安全替代方案?

security - 注册页面可以针对哪些攻击

c# - WCF 中使用 BasicHttpBinding 和 TransportWithMessageCredential 的用户授权

ruby - 从 ruby​​ 中的文件中检索哈希

security - SHA512 与 Blowfish 和 Bcrypt

php - 为什么登录时mysql查询不匹配?

php - 数据库活在过去?

php - 使用 JS 或 PHP 从 XML 中提取复杂的 URL

php - 社会保障/政府 ID 号的哈希和盐的替代方案