backslash_quote
是一个 配置参数,用于确定是否可以在字符串文字中使用 \'
来表示引号标记。
backslash_quote
在 PostgreSQL 8.2 中添加。
默认值
backslash_quote
的默认值为:safe_encoding
。
用法
在标准 SQL 中,单引号 ('
) 在字符串文字中通过重复它 (''
) 来表示,例如:
SELECT 'hello ''world''!'
但是,PostgreSQL 历史上也接受反斜杠转义形式 (\'
),例如:
SELECT 'hello \'world\'!'
这在某些客户端字符集编码中可能是一个潜在的安全漏洞。
backslash_quote
可以设置为以下值之一
开启
关闭
安全编码
开启
意味着 \'
将在所有情况下都被接受,
关闭
阻止使用 \'
,如果检测到它将导致引发 ERROR
。
安全编码
(默认值)意味着 \'
仅在客户端编码不允许在多字节字符中使用 ASCII \
时才会被接受。
请注意,backslash_quote
仅在以下情况下有效:
- 字符串文字使用转义字符串语法 (
E'foo'
) standard_conforming_strings
设置为开启
按 PostgreSQL 版本分列的详细信息
反斜杠引号 (PostgreSQL 17)
设置 | 安全编码 |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 枚举 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | 安全编码、开启、关闭 |
启动值 | 安全编码 |
重置值 | 安全编码 |
源文件 | |
源代码行 | |
挂起重启 | 错误 |
文档:反斜杠引号
反斜杠引号 (PostgreSQL 16)
设置 | 安全编码 |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 枚举 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | 安全编码、开启、关闭 |
启动值 | 安全编码 |
重置值 | 安全编码 |
源文件 | |
源代码行 | |
挂起重启 | 错误 |
文档:反斜杠引号
反斜杠引号 (PostgreSQL 15)
设置 | 安全编码 |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 枚举 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | 安全编码、开启、关闭 |
启动值 | 安全编码 |
重置值 | 安全编码 |
源文件 | |
源代码行 | |
挂起重启 | 错误 |
文档:反斜杠引号
反斜杠引号 (PostgreSQL 14)
设置 | 安全编码 |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 枚举 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | 安全编码、开启、关闭 |
启动值 | 安全编码 |
重置值 | 安全编码 |
源文件 | |
源代码行 | |
挂起重启 | 错误 |
文档:反斜杠引号
反斜杠引号 (PostgreSQL 13)
设置 | 安全编码 |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 枚举 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | 安全编码、开启、关闭 |
启动值 | 安全编码 |
重置值 | 安全编码 |
源文件 | |
源代码行 | |
挂起重启 | 错误 |
文档:反斜杠引号
反斜杠引号 (PostgreSQL 12)
设置 | 安全编码 |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 枚举 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | 安全编码、开启、关闭 |
启动值 | 安全编码 |
重置值 | 安全编码 |
源文件 | |
源代码行 | |
挂起重启 | 错误 |
文档:反斜杠引号
反斜杠引号 (PostgreSQL 11)
设置 | 安全编码 |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 枚举 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | 安全编码、开启、关闭 |
启动值 | 安全编码 |
重置值 | 安全编码 |
源文件 | |
源代码行 | |
挂起重启 | 错误 |
文档:反斜杠引号
反斜杠引号 (PostgreSQL 10)
设置 | 安全编码 |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 枚举 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | 安全编码、开启、关闭 |
启动值 | 安全编码 |
重置值 | 安全编码 |
源文件 | |
源代码行 | |
挂起重启 | 错误 |
文档:反斜杠引号
反斜杠引号 (PostgreSQL 9.6)
设置 | 安全编码 |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 枚举 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | 安全编码、开启、关闭 |
启动值 | 安全编码 |
重置值 | 安全编码 |
源文件 | |
源代码行 | |
挂起重启 | 错误 |
文档:反斜杠引号
反斜杠引号 (PostgreSQL 9.5)
设置 | 安全编码 |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 枚举 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | 安全编码、开启、关闭 |
启动值 | 安全编码 |
重置值 | 安全编码 |
源文件 | |
源代码行 | |
挂起重启 | 错误 |
文档:反斜杠引号
反斜杠引号 (PostgreSQL 9.4)
设置 | 安全编码 |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 枚举 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | 安全编码、开启、关闭 |
启动值 | 安全编码 |
重置值 | 安全编码 |
源文件 | |
源代码行 |
文档:反斜杠引号
反斜杠引号 (PostgreSQL 9.3)
设置 | 安全编码 |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 枚举 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | 安全编码、开启、关闭 |
启动值 | 安全编码 |
重置值 | 安全编码 |
源文件 | |
源代码行 |
文档:反斜杠引号
反斜杠引号 (PostgreSQL 9.2)
设置 | 安全编码 |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 枚举 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | 安全编码、开启、关闭 |
启动值 | 安全编码 |
重置值 | 安全编码 |
源文件 | |
源代码行 |
文档:反斜杠引号
反斜杠引号 (PostgreSQL 9.1)
设置 | 安全编码 |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 枚举 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | 安全编码、开启、关闭 |
启动值 | 安全编码 |
重置值 | 安全编码 |
源文件 | |
源代码行 |
文档:反斜杠引号
反斜杠引号 (PostgreSQL 9.0)
设置 | 安全编码 |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 枚举 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | 安全编码、开启、关闭 |
启动值 | 安全编码 |
重置值 | 安全编码 |
源文件 | |
源代码行 |
文档:反斜杠引号
反斜杠引号 (PostgreSQL 8.4)
设置 | 安全编码 |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | |
上下文 | 用户 |
变量类型 | 枚举 |
来源 | 默认值 |
最小值 | |
最大值 | |
枚举值 | 安全编码、开启、关闭 |
启动值 | 安全编码 |
重置值 | 安全编码 |
源文件 | |
源代码行 |
文档:反斜杠引号
反斜杠引号 (PostgreSQL 8.3)
设置 | |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | 有效值为 ON、OFF 和 SAFE_ENCODING。 |
上下文 | 用户 |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 |
文档:反斜杠引号
反斜杠引号 (PostgreSQL 8.2)
设置 | |
单位 | |
类别 | 版本和平台兼容性/以前的 PostgreSQL 版本 |
简短描述 | 设置是否允许在字符串文字中使用“\’”。 |
额外描述 | 有效值为 ON、OFF 和 SAFE_ENCODING。 |
上下文 | 用户 |
变量类型 | 字符串 |
来源 | 默认值 |
最小值 | |
最大值 |
文档:反斜杠引号
更改历史记录
- PostgreSQL 8.2
- 添加 (提交 b3eb4ea5)
示例
backslash_quote
的基本用法示例
postgres=# SHOW backslash_quote; backslash_quote ----------------- safe_encoding (1 row) postgres=# SELECT E'hello \'world\'!'; ?column? ---------------- hello 'world'! (1 row) postgres=# SET backslash_quote TO off; SET postgres=# SELECT E'hello \'world\'!'; ERROR: unsafe use of \' in a string literal LINE 1: SELECT E'hello \'world\'!'; ^ HINT: Use '' to write quotes in strings. \' is insecure in client-only encodings.
参考
- PostgreSQL 文档: 反斜杠引号