比方说,我想创建一个登录查询:
$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倍(顺便说一句,我非常喜欢这个网站!)
发布于 2013-09-06 23:43:56
将我的数据放在一个数组中,然后搜索该数组,而不是搜索查询,这是否健康?
不是
这会破坏整个数据库的目的。的主要目的是为您提供所需的唯一数据,并在其中进行所有的数据挖掘。这就是问题所在。
所以,这是一个不可接受的解决方案。虽然安全,但它绝对是低效和不可靠的。
幸运的是,已经有了一种适当的方法来运行查询安全-预准备语句。您可以在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";
}https://stackoverflow.com/questions/18661252
复制相似问题