安全注册,使用hash()登录

时间:2016-03-23 08:49:46

标签: php mysqli

<?php 
$conn=mysqli_connect("localhost", "root", "","users");

if (!$conn) {
    echo "Bad connection!!!";
}

        $user_name=$_POST['user_name'];
        $user_password=$_POST['user_password'];


$sql_check=mysqli_query($conn, "SELECT user_name, password FROM user_info WHERE user_name='$user_name' AND password='$user_password'") or die("Bad sql query");

if (mysqli_num_rows($sql_check)>0) {
    echo "user exists";
}



else {
    $sql_insert=mysqli_query($conn, "INSERT INTO user_info (id, user_name, password) VALUES (null,'$user_name', '$user_password')");
    echo "New user added!!!";
}
 ?>

 <!DOCTYPE html>
 <html>
 <head>
    <title></title>
 </head>
 <body>



<form method="POST" action="pdo_konekcija.php">
<input type="text" name="user_name">
<input type="password" name="user_name">
<input type="submit" name="btn_submit" value="REGISTER">
</form>


 </body>
 </html>

我有基本的用户注册表格。我无法找到检查用户是否存在的最佳方法,所以如果不是,我想注册新用户,你可以从sql语句中看到。如何为user_password字段包含hash()密码?必须填写这两个字段以进行检查和注册过程。我可以使用这种mysql I程序方式来阻止sql注入吗?我正在从头开始建立注册/登录,所以需要帮助,谢谢大家。

2 个答案:

答案 0 :(得分:1)

使用PHP的内置函数进行散列和验证密码,但这需要5.5.0及更高版本。 http://php.net/manual/en/function.password-hash.php

将salt存储在注册时创建的数据库中。 当用户登录时,检查它们是否存在,获取其盐并使用password_verify进行验证。

在处理此数据时使用预准备语句来停止SQL注入

如果您没有5.5.0及更高版本,则github(https://github.com/ircmaxell/password_compat)上有兼容版本。

答案 1 :(得分:0)

要检查用户密码是否匹配,首先检查用户是否存在并检索其密码哈希值,然后通过哈希验证函数运行。

在回答第二个问题时,是的,您当前的系统容易受到SQL注入攻击。