PHP登录页面安全审计

PHP登录页面安全审计,php,security,authentication,Php,Security,Authentication,我正在对我的登录逻辑进行安全审计,并试图找出哪个密码检查更安全,以及更好的算法。以下是伪PHP代码中的两种方法: 方法一: $bcrypt = new Bcrypt(); $password_hash = $bcrypt->hash($_POST['password']); $result = mysqli_query_check_login($username, $password_hash); if(mysqli_numb_rows($result) > 0) { //i

我正在对我的登录逻辑进行安全审计,并试图找出哪个密码检查更安全,以及更好的算法。以下是伪PHP代码中的两种方法:

方法一:

$bcrypt = new Bcrypt();
$password_hash = $bcrypt->hash($_POST['password']);
$result = mysqli_query_check_login($username, $password_hash);

if(mysqli_numb_rows($result) > 0) {
   //is valid
}
方法二:

$bcrypt = new Bcrypt();
$result = mysqli_query_check_login($username);

//Note $result->password is a bcrypt hash
if($bcrypt->verify($_POST['password'], $result->password)) {
   //is valid
}
区别在于
方法I
运行bcrypt散列,然后在mysql查询中发送用户名和散列密码
Method II
仅通过用户名从mysql获取哈希密码,然后在PHP中比较这两个值

有什么安全区别吗


谢谢。

这些实际上是一样的东西。使用这两种方法都不应该有任何安全隐患

这些实际上是同一件事。使用这两种方法都不应该有任何安全隐患

  • 方法II
    可能会使获取用户信息和更新类似“登录尝试失败”计数器的内容变得更简单。我所看到的
    方法I
    的大多数实现仅仅依赖于
    其中user=$login和password=$password
    如果密码不匹配,则不选择用户
  • 方法II
    可能会使获取用户信息和更新类似“登录尝试失败”计数器的内容变得更简单。我所看到的
    方法I
    的大多数实现仅仅依赖于
    其中user=$login和password=$password
    如果密码不匹配,则不选择用户