2013-07-27 2 views
0

Итак, моя главная проблема с чем-нибудь, что идет между WHERE и ORDER BY, LIMIT и т.д.Настройка MySQL запросов с динамическими наборами данных в разделе

Я его в настоящее время установки, как показано ниже:

SELECT " . $column_string . " FROM " . $table_name . " " . $query_join . " " . $where . " " . $query_end . " " . $query_limit 

Моя проблема заключается в том, что у меня есть настройка для проверки каждой переменной с помощью escape-строки, но когда вы приходите к $ query_end, который будет содержать test = '1' AND test2 = '2' и т. Д. У меня есть эта настройка раздела, отправьте всю строку за один раз. Но, конечно, если вы проверите, что он превратится в test = \ '1 \' AND test2 = \ '2 \'.

Единственное, что я мог придумать, это разделить его на какой-то странный массив вроде [test2 =], [2], но это не работает (test1 = '2' OR test2 = '3'), хотя я может заставить его работать, я действительно не хочу этого делать.

Может ли кто-нибудь предложить лучшее решение вышеуказанной проблемы? Также есть еще один элемент для проверки инъекции вне mysql-real-escape-string?

Вся эта установка позволяет мне отправлять несколько запросов через ajax с помощью json, а затем отправлять все данные обратно в 3-уровневый массив.

+2

Я сомневаюсь, что вы получите разумные ответы на этот вопрос. Вы говорите о своей собственной настраиваемой настройке, где вы закодировали себя, чтобы автоматически избежать каждой переменной. Очевидно, вам нужно изменить свой собственный код/​​библиотеку, чтобы разрешить передачу определенных переменных через unescaped. Поскольку вы, как представляется, не используете известную инфраструктуру или библиотеку и не размещали свой собственный код, который показывает, как работает ваш механизм экранирования, нельзя рекомендовать конкретные изменения или обходные пути. –

ответ

1

Ничего не случилось с «странным» массивом.

Каждое пользовательское решение поиска основано на аналогичном подходе - ряд условий для сборки предложения WHERE динамически.
Я понятия не имею, зачем вам нужен набор полей или таблица, заданная пользователем. Но идея была бы совершенно одинаковой. Просто не забудьте проверить все идентификаторы и операторы в белом списке с жестким кодом.

+0

Я просто подумал, что за пределами побега будет что-то, что может также защитить от инъекций, но я никогда ничего не видел. –

Смежные вопросы