如何将我的登录脚本中的安全性从MD5更新为更安全的?

DxV*_*eno 5 php security hash login password-hash

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

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

并登录:

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

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

我听说过SHA1之类的东西.

jsz*_*ody 3

简短回答

使用bcryptmd5sha1

更长的答案

使用crypt()很难。PHP 5.5 版中推出了一个新的 PHP 密码哈希 API,您可以在此处阅读:

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

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

https://github.com/ircmaxell/password_compat

编辑:请参阅此线程以获得有关该主题的更彻底的答案:

如何在 PHP 中使用 bcrypt 对密码进行哈希处理?