Тип: | enum |
По умолчанию: | safe_encoding |
Контекст: | user |
Перезапуск: | false |
Значения: | [safe_encoding, on, off] |
Этот параметр определяет, можно ли будет представить знак апострофа в строковой константе в виде \'
. В стандарте SQL определён другой, предпочитаемый вариант передачи апострофа, удвоением (''
), но &project; исторически также принимал вариант \'
. Однако применение варианта \'
сопряжено с угрозами безопасности, так как в некоторых клиентских кодировках существуют многобайтные символы, последний байт которых численно равен ASCII-коду \
. Если код на стороне клиента выполнит экранирование некорректно, это может открыть возможности для SQL-инъекции. Предотвратить этот риск можно, запретив серверу принимать запросы, в которых апостроф экранируется обратной косой. Допустимые значения параметра backslash_quote
: on
(принимать \'
всегда), off
(не принимать никогда) и safe_encoding
(принимать, только если клиентская кодировка не допускает присутствия ASCII-кода \
в многобайтных символах). Значение по умолчанию — safe_encoding
.
Заметьте, что в строковой константе, записанной согласно стандарту, знаки \
обозначают просто \
. Этот параметр влияет только на восприятие строк, не соответствующих стандарту, в том числе с синтаксисом спецпоследовательностей (E'...'
).