Безопасная разработка SQL-запросов на Java - PullRequest
1 голос
/ 24 октября 2019

Как мне разработать несколько условий SQL и впоследствии безопасно включить эти условия в запрос вместе с предложением order by?

Я пытаюсь написать операторы SQL с потенциально множественными условиями и порядком предложений, например

SELECT *
FROM table_1
WHERE id = '4' AND (Multiple conditions)
ORDER BY (Column name and direction).

До сих пор я использовал подготовленные операторы, но он не поддерживает динамическиеПредложение ORDER BY, не имеющее нескольких динамических условий. Таким образом, мой текущий подход предусматривает использование конкатенации строк для самостоятельной разработки условий, а затем использование форматирования строк для добавления их в запрос вместе с предложением order by. Я считаю, что этот подход уязвим для внедрения SQL, и я не смог найти безопасный альтернативный подход. Я рассмотрел динамические запросы, но у меня нет доступа в этой части конвейера. Я также рассмотрел санацию, но это все равно оставило бы уязвимость для атаки JSON или HTML. Я также рассмотрел возможность написания независимых запросов для каждого сценария, но это совсем не масштабируется.

Любая помощь приветствуется, я уже некоторое время ищу решение.

РЕДАКТИРОВАТЬ: Вот фрагмент.

static final String SELECT_DEALS =

"SELECT *
FROM #DEALS
WHERE DEAL_ID = ? AND NAME LIKE ? AND ?
ORDER BY ?";

Первые два параметра работают нормально, вторые два приводят к ошибкам типа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...