如何编写安全的用户名& PHP中的密码验证?
我使用MD5作为密码($ pass)和字符串作为用户名($ name),并在PHP中编写此代码以进行用户帐户验证。
$post_vars = $_POST;
if (isset($post_vars['name']))
{
$name = $post_vars['name'];
$pass = md5($post_vars['pass']);
$dbConn = db_open();
$sql = "select `password` from `user_table` where `user_name` = '$name' limit 1;";
echo $sql;
$sth = $dbConn->prepare($sql);
$sth->execute();
$row = $sth->fetch();
if ($row !== false)
{
$verify = $row['password'];
if ($pass == $verify)
{
$_SESSION['isLoggedIn'] = true;
header('Location: ' . _DEBUG_URL_);
}
else $iframeURL = _LIB_URL_ . 'accessdenied.htm';
}
else echo 'No results found!';
}
这个查询是否可以被SQL注入方法破解,以及如何被黑客入侵?我使用PDO for MySQL。
"select `password` from `user_table` where `user_name` = '$name' limit 1;"
答案 0 :(得分:-2)
Mysql注入发生在表单字段中,人们只需在您的登录表单中输入一个查询,他们就会按下登录。您可以使用找到的PDO::prepare
语句here
我还建议使用sprintf()
进行查询:
$sql = sprintf("select `password` from `user_table` where `user_name` = '%s' limit 1", $name);