【发布时间】: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_*。