Как безопасно предотвратить внедрение SQL с Oracle с помощью запросов regexp_like - PullRequest
0 голосов
/ 10 октября 2018

Я нахожусь в странной ситуации, когда я должен предотвратить внедрение SQL с помощью строкового запроса, используя REGEXP_LIKE в Oracle.Я не могу использовать подготовленное утверждение из-за проблем с производительностью.Oracle обрабатывает запрос вдвое больше времени, что приводит к превышению времени ожидания в нашей производственной среде при использовании подготовленной версии оператора.

Обычно я бы использовал что-то вроде операторов escape оракула {и}, но в этом случае они имеют значение в регулярном выражении и, похоже, не работают.Кроме одинарных кавычек, что мне нужно остерегаться для случая с регулярным выражением, подобного этому?

Пример запроса

SELECT * FROM table where somecolumn = 2 and regexp_like(column, '\Wmy text\W|\Wfoo\W');

Хотя я видел другие вопросы о ручной защите от внедрения SQL, ни один из них не касался случаев регулярных выражений, подобных этому.

Будет ли сбежать работать так?

SELECT * FROM table where somecolumn = 2 and regexp_like(column, q'[\Wmy text\W|\Wfoo\W]');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...