繁体   English   中英

带有 MySQL 连接的 PHP 中的参数化查询

[英]Parameterized queries in PHP with MySQL connection

我读过关于 SQL 注入的内容,所以我在我的网站上进行了尝试,当然它奏效了。我们正在连接到数据库。 所以这是我登录页面的 PHP 代码的一部分:

$userName = $_POST["username"];
$userPass = $_POST["password"];

$query = "SELECT * FROM users WHERE username = '$userName' AND password = '$userPass'";

$result = mysqli_query($dbc, $query); //$dbc is for MySQL connection: $dbc = @mysqli_connect($dbhost, $dbuser, $dbpass, $db)

$row = mysqli_fetch_array($result);

if(!$row){
    echo "No existing user or wrong password.";
}

我一直在寻找解决方案很长时间,但我无法弄清楚如何以参数化的方式使其工作。 你能帮我完成我的代码以防止 SQL 注入吗?

干得好

$stmt = mysqli_prepare($dbc, "SELECT * FROM users WHERE username = ? AND password = ?");
mysqli_stmt_bind_param($stmt, "s", $userName);
mysqli_stmt_bind_param($stmt, "s", $userPass);
mysqli_stmt_execute($stmt);
$row = mysqli_stmt_fetch($stmt);

Documentation

作为旁注,我建议加密您的密码或更好地使用哈希以确保安全,将密码存储为纯文本是不好的

用:

$userPass = mysqli_real_escape_string($mysqli,$_POST["password"]);

这会阻止 '' 或 '=' 的事情:) 其中 $mysqli 是您的连接字符串 ofc。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM