MeekroDB — как безопасно передать ORDER BY имена полей и аргументы?

Я использую MeekroDB в проекте PHP. Для некоторых запросов мне нужно передать произвольные имена полей для сортировки. На сайте meekro НЕТ примеров предложений ORDER BY.

Как безопасно передать имена полей и избежать уязвимостей SQL-инъекций? Я понимаю, что могу заранее проверить каждое имя поля со списком допустимых полей, но я пытаюсь сделать этот код более обобщенным как базовая функция «get»: функция get (Array $ filters, Array $ sort_by)

Будет ли заполнитель% b (обратные метки) достаточен для защиты от произвольного внедрения кода при передаче имен полей?

Например:

SELECT * FROM table1 ORDER BY %b

Или для нескольких полей:

SELECT * FROM table1 ORDER BY %lb

Это безопасно?

Кроме того, как я могу тогда включать произвольно модификаторы DESC или ASC по мере необходимости?

1

Решение

Да, вы можете безопасно использовать b а также lb для цели, так как оба реализованы с использованием formatTableName метод, который является безопасным.

К сожалению, модификаторы направления должны быть продезинфицированы вручную, вот так

$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
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]