提问人:Vishal Rana 提问时间:2/15/2023 最后编辑:Your Common SenseVishal Rana 更新时间:2/15/2023 访问量:44
我们可以使用 OOPS 概念在直接查询中使用变量值吗?- SQL 注入 [重复]
Can we use variable value in direct query using OOPS concept ? - SQL Injection [duplicate]
问:
我正在使用 PHP PDO oops 概念创建一个网站。对于喜欢 - 我想计算不同列的列数。我在一个类中创建了一个函数。我遵循所有步骤来保护数据(SQL注入)。 我的函数 -
public function count_by_id($table,$col,$val)
{
$table=$this->sanitize($table,'string');
$col=$this->sanitize($col,'string');
$val=$this->sanitize($val,'string');
$sql= "SELECT count(*) FROM $table WHERE $col=:val";
$stmt = $this->dbConnection->prepare($sql);
$stmt->bindParam(':val', $val, PDO::PARAM_STR);
$stmt->execute();
$number_of_rows = $stmt->fetchColumn();
return $number_of_rows;
}
$table 是一个静态变量,不会更改任何值。我只将它用于表名,也用于列名。最终用户不会更改表和列值。最终用户将只更改$val值,我已使用准备好的语句绑定了该值。
Like - 调用函数 -
count_by_id('users','username',$username);
用户和用户名不会改变,但$username会改变,我已经绑定了它。SQL注入有什么原因吗?我没有从表单中获取表名和列名。 我可以将它用于不同的表和列,如下所示-
count_by_id('posts','slug',$slug);
我完全感到困惑,因为许多程序员都像我一样,许多人说这可能是SQL注入的原因。 您对此有何看法?
答: 暂无答案
评论
Find by column: found
$this->table
$fieldName