假设我想创建一个登录查询:
$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";
但是这样,客户就可以访问并将他的数据放入我的查询中...... 我不喜欢它...为什么要授予客户端从我的数据库获取数据的权限?
问题:将数据放入数组中,然后搜索数组而不是搜索查询是否健康? 它可能会慢一点(假设我没有很多记录)。 即使慢一点,会不会更安全?
还有建议吗?代码示例?
10x, (顺便说一句,我非常喜欢这个网站!)
最佳答案
will it be healthy to put my data in an array, and then search the array instead of searching the query?
否
这会破坏数据库的整体用途。其主要目的是为您提供所需的唯一数据,并在内部进行所有数据挖掘。这就是重点。
所以,这是 Not Acceptable 解决方案。尽管安全,但它绝对低效且不可靠。
幸运的是,已经有一种安全运行查询的正确方法 - 准备好的语句。您可以在 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";
}
关于php - 高效安全的查询思路——mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18661252/