set_quote_pgsql_str
set_quote_pgsql_str 指令用于转义字符串中的特殊字符,以便在 PostgreSQL 查询中安全使用。
NGINX Set-Misc module
·
httpserverlocationif in serverif in location
语法set_quote_pgsql_str variable [$variable];
默认值none
上下文http, server, location, if in server, if in location
参数1-2
说明
set_quote_pgsql_str 指令处理给定的字符串变量并转义在 PostgreSQL 中具有特殊含义的字符。这包括将字符串转换为 E'...' 格式,以允许包含诸如换行 \n 和引号 \\ 等转义序列。当指定时,它可以通过对将被包含到 SQL 查询中的用户输入进行谨慎处理来增强安全性,从而防止 SQL 注入攻击。
该指令接受一个或两个参数。第一个是包含要处理字符串的变量,第二个(可选)可以是相同的变量以在原位修改。如果省略第二个参数,则将直接修改第一个参数的值。此灵活性允许用户要么输出一个包含转义内容的新变量,要么直接修改原始变量而无需创建另一个。
使用场景包括在与 PostgreSQL 数据库交互的 Web 应用中验证或清理输入,确保动态 SQL 命令在执行时不会出现意外行为。需要注意的是,尽管此指令在为 PostgreSQL 转义字符串方面有效,但开发人员仍应考虑其他措施来安全地处理 SQL 查询,例如在可能的情况下使用预处理语句。
配置示例
location /bar {
set $foo "hello\n\n'\"\\";
set_quote_pgsql_str $foo; # for PostgreSQL
# now $foo is: E'hello\n\n\'\"\\'
}⚠
确保输入变量已定义并包含预期的值;否则,输出可能不符合预期。
⚠
如果不想无意中覆盖原始变量,请在使用该指令时谨慎,不要省略第二个参数。