php - 高效安全的查询思路——mysql

标签 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";

但是这样,客户就可以访问并将他的数据放入我的查询中...... 我不喜欢它...为什么要授予客户端从我的数据库获取数据的权限?

问题:将数据放入数组中,然后搜索数组而不是搜索查询是否健康? 它可能会慢一点(假设我没有很多记录)。 即使慢一点,会不会更安全?

还有建议吗?代码示例?

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/

相关文章:

php - 如何在没有cron的情况下向MySQL数据库写入数据?

php - 通过使用 limit 或使用程序来获取特殊记录的 SQL select

php - 如何阻止 Web 应用程序中过多的请求?

javascript - 在客户端 JavaScript 中存储 Web 应用程序的用户密码 - 这安全吗?

PHP/MySQL 形式 : escaping, sanitizer ,散列......我什至从哪里开始?

javascript - PHP按下按钮时更新数据库中文本输入的值

php构造函数继承

php - 如何在一行中获取具有相同ID但在另一列中具有不同值的数据并在php中显示到表中

java - 使用 Spring 和 Hibernate 长时间运行事务?

mysql - 优化MySQL查询嵌套不存在可能吗?