backslash_quote
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | — | user | enum |
| 15 | — | user | enum |
| 16 | — | user | enum |
| 17 | — | user | enum |
| 18 | — | user | enum |
| 19 | — | user | enum |
문자열 리터럴 안에서 작은따옴표를 \'로 표현하는 것을 허용할지 정한다.
SQL 표준에서 권장하는 방식은 따옴표를 두 번 쓰는 ''이지만, PostgreSQL은 역사적으로 \'도 받아들여 왔다. 문제는 \'가 보안 위험을 만든다는 점이다. 일부 클라이언트 문자 인코딩에는 마지막 바이트가 ASCII \와 수치상 같은 멀티바이트 문자가 있어서, 클라이언트 쪽 이스케이프 처리가 잘못되면 SQL injection 공격이 가능해진다. 서버가 backslash로 따옴표를 이스케이프한 것처럼 보이는 쿼리를 거부하면 이 위험을 막을 수 있다.
허용되는 값은 on(항상 허용), off(항상 거부), safe_encoding(클라이언트 인코딩이 멀티바이트 문자 안에 ASCII \를 허용하지 않을 때만 허용) 세 가지이고 기본값은 safe_encoding이다. 표준 준수 문자열 리터럴에서 \는 어차피 \ 그 자체를 뜻하므로, 이 파라미터는 escape string 문법(E'...')을 포함한 비표준 리터럴 처리에만 영향을 준다.
출처: PostgreSQL 18 문서