gpt4 book ai didi

php - MeekroDB - 如何安全地传递 ORDER BY 字段名称和参数?

转载 作者:行者123 更新时间:2023-11-28 23:24:17 24 4
gpt4 key购买 nike

我在 PHP 项目中使用 MeekroDB。对于某些查询,我需要传递任意字段名称来进行排序。 meekro 站点上没有 ORDER BY 子句的示例。

如何安全地传递字段名称并避免 SQL 注入(inject)漏洞?我意识到我可以事先用有效字段列表检查每个字段名称,但我试图使这段代码更通用化为基本的“get”函数:function get(Array $filters, Array $sort_by)

%b 占位符(反引号)是否足以在传递字段名称时防止任意代码注入(inject)?

例如:

SELECT * FROM table1 ORDER BY %b

或者对于多个字段:

SELECT * FROM table1 ORDER BY %lb

这样安全吗?

另外,我如何根据需要任意包含 DESC 或 ASC 修饰符?

最佳答案

是的,您可以安全地使用 blb 来达到目的,因为它们都是使用 formatTableName 实现的安全的方法。

不幸的是,方向修饰符应该像这样用手 sanitizer

$dirs  = ["ASC","DESC"]; 
$key = array_search($_GET['dir'], $dirs); // see if we have such a value
$dir = $dirs[$key]; //if not, first one will be set automatically. smart enuf :)
$query = "SELECT * FROM table1 ORDER BY %b $dir"; //value is safe

关于php - MeekroDB - 如何安全地传递 ORDER BY 字段名称和参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40024865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com