如何在 SQL 注入的 POV 中使用 where as 函数和 select 函数 [已关闭]

How to use where as function and select function in POV of SQL Injection [closed]

提问人:Madisson 提问时间:1/6/2023 最后编辑:Your Common SenseMadisson 更新时间:1/6/2023 访问量:73

问:


想改进这个问题吗?更新问题,以便可以通过编辑这篇文章用事实和引文来回答。

11个月前关闭。

由于我必须多次获取数据,所以我创建了选择函数,它在哪里是函数的写入方式,而且从SQL注入的角度来看,这种方式不好吗?请指导

function where($column, $value) {
  return "AND $column = :$column";
}

function fetchCategory($where, $data1) {
  // Create a PDO instance
  $db = Database::newInstance();
              
  // Build the SELECT statement with a WHERE clause
  $sql1 = "SELECT * FROM category WHERE 1=1 $where";
              
  // Execute the SELECT statement with bound parameters
  $row1 = $db->read($sql1, $data1);
              
  // Return the result set
  return $row1;
}
$where = where('cat_id', $value->parent_id);
$data1 = array(':cat_id' => $value->parent_id);
$result = fetchCategory($where, $data1);

if ($result) {
  // Fetch the data from the result set
  $data['Dis_05']= $result[0]->category;
} else {
  // No data was found
  echo "No data found";
}
php pdo sql 注入

评论

1赞 bassxzero 1/6/2023
我不是 100% 确定您在这里要做什么,但您不能对列名使用参数化查询。
1赞 ADyson 1/6/2023
“正确的方式”是主观的,所以我们无法回答这个问题。如果你认为制作类似函数的东西对你有用,那么请继续去做。由于我们看不到您的函数,因此我们无法告诉您它是否安全,不会进行 SQL 注入。whereread()
3赞 Your Common Sense 1/6/2023
只编写两个函数 fetchCategoryById($id) 和 fetchCategoryByAnotherColumn($column) 将比这个笨拙的不可靠的自制查询构建器更好
2赞 Your Common Sense 1/6/2023
虽然我理解从代码中删除重复项的冲动,但你选择的方法在从可读性到可重用性的许多层面上都是错误的。怀着良好的意图,你即将创建一个 MONSTER,最终,它比普通 SQL 更难使用 10
2赞 Your Common Sense 1/6/2023
这里最糟糕的前提之一是“多次获取数据”的想法。实际上,它将与 1 或 2 个不同的查询一起使用。但是您将花费无可比拟的工作量来尝试创建一个通用的解决方案......用于 2 个查询

答: 暂无答案