首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >参数化查询

参数化查询
EN

Stack Overflow用户
提问于 2010-12-21 22:05:08
回答 3查看 2.5K关注 0票数 2

请问这段代码安全吗?

代码语言:javascript
复制
/* 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();
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-21 22:07:42

就对mySQL注入的保护而言:是的。Mysqli的参数化查询是安全的,不会受到注入攻击。

如果echo来自外部源,则可能需要添加htmlentities()回显语句,以防止用户使用<script>(some malicious code)</script>等用户名进行注册

票数 7
EN

Stack Overflow用户

发布于 2010-12-21 22:08:54

呼叫本身是安全的。不过,您可能希望将此$mysqli = new mysql('localhost', 'username', 'password', 'db');放在一个单独的文件中,放在您的公共web目录之外。

票数 3
EN

Stack Overflow用户

发布于 2010-12-21 22:48:44

除了Pekka的评论:也在echo语句中使用$result上的htmlspecialchars。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4500070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档