首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高效安全的查询理念- mysql

高效安全的查询理念- mysql
EN

Stack Overflow用户
提问于 2013-09-06 23:24:44
回答 1查看 49关注 0票数 0

比方说,我想创建一个登录查询:

代码语言:javascript
复制
$query ="SELECT * FROM userstable WHERE uName='".$userName."' AND pass='".$password."' ";
$result = mysql_query($query);

$num =  mysql_numrows($result);
if ($num == 0) {
echo "wrong detiales";
}
else
{
echo "in";

但通过这种方式,客户端可以到达并将其数据放入我的查询中……我不喜欢这样。为什么要让客户端访问我的数据库中的数据?

问:将我的数据放在一个数组中,然后搜索该数组而不是搜索查询是否健康?它可能会慢一点(比方说我没有太多记录)。即使它稍微慢一点,它也会更安全吗?

还有什么建议?代码示例?

10倍(顺便说一句,我非常喜欢这个网站!)

EN

回答 1

Stack Overflow用户

发布于 2013-09-06 23:43:56

将我的数据放在一个数组中,然后搜索该数组,而不是搜索查询,这是否健康?

不是

这会破坏整个数据库的目的。的主要目的是为您提供所需的唯一数据,并在其中进行所有的数据挖掘。这就是问题所在。

所以,这是一个不可接受的解决方案。虽然安全,但它绝对是低效和不可靠的。

幸运的是,已经有了一种适当的方法来运行查询安全-预准备语句。您可以在famous question中阅读它们,并从PDO tag wiki获取更多实用的细节

也就是说,你必须让它

代码语言:javascript
复制
$query = "SELECT 1 FROM userstable WHERE uName=? AND pass=?";
$stmt  = $pdo->prepare($query);
$stmt->execute(array($userName, $password));
$found = $stmt->fetchColumn();
if (!$found)
{
    echo "wrong detiales";
}
else
{
    echo "in";
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18661252

复制
相关文章

相似问题

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