предотвращение sql-инъекции в части "order by" в oracle

Чтобы получить некоторые данные, я создаю sql-запрос :)
. Конечно, есть некоторые детали фильтрации и упорядочивания.

Для получения результата я использую "NamedParameterJdbcTemplate" и когда мне нужно добавить что-то в часть "where", я использую карту параметров, чтобы предотвратить инъекции.

Но с частью "order by" все иначе, так как здесь нет автоматического экранирования (а это часть sql). Эта часть порядка иногда заполняется данными от пользователя (напрямую), иногда ставятся дополнительные параметры сортировки из кода. Есть одна проблема: иногда это поле сортировки содержит не только имя столбца, но и sql-выражение.

Сейчас каждый параметр для сортировки экранируется вручную путем замены некоторых символов (например, ') на пустую строку, но некоторые параметры, которые мы задаем для нашего кода, немного сложны для прохождения этого правила.

Как лучше всего предотвратить sql-инъекции в части запроса sort, когда вы используете шаблон jdbc?

16
задан APC 30 January 2012 в 15:23
поделиться