функция побега оракула - PullRequest
4 голосов
/ 20 августа 2011

Есть ли в оракуле функция, которая экранирует неправильные символы в SQL-запросе? У меня есть код, который строит запрос из другой строки, и некоторые из них могут содержать символ ', это нарушает SQL-запрос.

Ответы [ 3 ]

11 голосов
/ 20 августа 2011

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

При этом, предполагая, что вы используете Oracle 10.1 или новее, вы можете использовать синтаксис q цитирования. Что-то вроде

  1  select q'[This is a string with an embedded ']' str
  2*   from dual
SQL> /

STR
-----------------------------------
This is a string with an embedded '

Вы можете заменить символы [и] на ряд других символов в зависимости от того, какие символы могут появиться в строке

  1  select q'<This is a string with an embedded '>' str
  2*   from dual
SQL> /

STR
-----------------------------------
This is a string with an embedded '

SQL> ed
Wrote file afiedt.buf

  1  select q'{This is a string with an embedded '}' str
  2*   from dual
SQL> /

STR
-----------------------------------
This is a string with an embedded '
3 голосов
/ 20 августа 2011

вы никогда не должны строить запросы из строк - используйте параметры вместо этого ... в противном случае всегда есть шанс, что кто-нибудь найдет способ ввести какой-то SQL.

2 голосов
/ 21 августа 2011

Две одинарные кавычки вместе избегают одной кавычки. Поэтому используйте '' вместо ' в вашей строке.

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