高效安全的查询理念 - mysql

时间:2013-09-06 15:24:44

标签: php mysql security sql-injection

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

$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倍, (顺便说一句,我非常喜欢这个网站!)

1 个答案:

答案 0 :(得分:1)

  

将数据放入数组,然后搜索数组而不是搜索查询是否健康?

NO

它会破坏数据库的整个目的。哪个主要目的是为您提供所需的唯一数据,在内部进行所有数据挖掘。这就是重点。

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

幸运的是,已经有一种正确运行查询的方法 - 预备语句。您可以在famous question中阅读这些内容,并从PDO tag wiki

获取更多实用的详细信息

即,你必须成功

$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";
}