php - 参数化查询

标签 php mysqli

请问这段代码安全吗?

/* Create a new mysqli object with database connection parameters */
$mysqli = new mysql('localhost', 'username', 'password', 'db');

if(mysqli_connect_errno()) {
echo "Connection Failed: " . mysqli_connect_errno();
exit();
}

/* Create a prepared statement */
if($stmt = $mysqli -> prepare("SELECT priv FROM testUsers WHERE username=?
AND password=?")) {

/* Bind parameters
s - string, b - boolean, i - int, etc */
$stmt -> bind_param("ss", $user, $pass);

/* Execute it */
$stmt -> execute();

/* Bind results */
$stmt -> bind_results($result);

/* Fetch the value */
$stmt -> fetch();

echo $user . "'s level of priviledges is " . $result;

/* Close statement */
$stmt -> close();
}

/* Close connection */
$mysqli -> close();

最佳答案

就防止 mySQL 注入(inject)而言:是的。 Mysqli 的参数化查询可以安全地抵御注入(inject)攻击。

如果$user来自外部来源,您可能需要添加 htmlentities() echo 语句阻止用户使用类似 <script>(some malicious code)</script> 的用户名进行注册

关于php - 参数化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4500070/

相关文章:

php - preg_replace 能否一次进行多个搜索和替换操作?

即使 php 重新启动后,php.ini mysqli.allow_persistent 也不会关闭

php - 将 $mysqli 设置为 OOP 的全局变量

php - 登录 phpmyadmin 时出错?

php - 堆叠ajax请求

php - ffmpeg 无法初始化模块 windows 7 32 位

javascript - php图片上传带水印并调整大小

javascript - 使用 jquery 在 php 中回显警报

PHP MySQLi 使用 foreach 获取行

php - mysqli_fetch_array 未获取信息