【问题标题】:How to use password_verify function in PHP [duplicate]如何在 PHP 中使用 password_verify 函数 [重复]
【发布时间】:2015-09-30 11:40:39
【问题描述】:

我正在用 PHP (login_config.php) 编写一个基本的网站登录脚本。

我的问题是:关于用户安全/保护,我是否正确实施了 password_verify() 函数?

-注意:post数据是从login.php发送的

代码(LOGIN_CONFIG.PHP):

        <?php                       //POST VARIABLES
    $submit = $_POST['login_submit'];
    $username = $_POST['login_username'];
    $password = $_POST['login_password'];
    $email = $_POST['login_email'];

    require 'password_config.php';
    if(isset($submit)){
    require 'db/connect.php';
    //PASSWORD VERIFYING
    $pass_query = "SELECT password FROM users WHERE email='$email'";
    $queried = mysql_query($pass_query);
    while($row = mysql_fetch_array($queried)){
    $user_pass = $row['password'];
    $veri_password = password_verify($password, $user_pass);
    }
    if(!$veri_password === true){$errors[] = '-Account does not exist ';}

编辑:我知道其他缺陷,请注意最初的问题。

【问题讨论】:

  • 你可以将if(!$veri_password === true){简化为if(!$veri_password) {...但是切换到支持prepared statements/bind vars的db接口
  • 我会更担心那个巨大的 sql 注入孔...
  • .. 以及使用已弃用的 mysql_ 调用...
  • 啊哈哈是的,这是接下来要做的事情。
  • -由于网络托管,我也无法使用 mysqli_*。

标签: php security passwords


【解决方案1】:

您正确使用password_verify() 函数只要 $row['password'] 返回由password_hash() 创建的对应密码散列 纯密码,而不是普通密码本身或任何其他值。

请注意,此答案中不包含进一步的安全问题。

【讨论】:

  • - 上面的代码结构确实符合我的代码,谢谢你回答我的问题。
猜你喜欢
  • 2016-01-16
  • 2015-02-21
  • 2013-02-06
  • 2015-05-10
  • 1970-01-01
  • 2019-06-01
  • 1970-01-01
  • 2021-02-11
相关资源
最近更新 更多