gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:10:19 26 4
gpt4 key购买 nike

我读过有关 SQL 注入(inject)的文章,所以我在我的网站上进行了尝试,当然它成功了。我知道解决方案是参数化查询,我也知道那里有很多示例,但没有一个提到我们连接到数据库的部分。所以这是我登录页面的 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 注入(inject)吗?

最佳答案

给你

$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

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

关于php - 带有 MySQL 连接的 PHP 中的参数化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36366754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com