set_quote_sql_str
`set_quote_sql_str` 指令对字符串中的特殊字符进行转义,以便在 SQL 查询中安全使用。
NGINX Set-Misc module
·
httpserverlocationif in serverif in location
语法set_quote_sql_str var | var var;
默认值none
上下文http, server, location, if in server, if in location
参数1-2
说明
set_quote_sql_str 指令是 NGINX Set-Misc 模块的一部分,用于通过转义可能包含特殊字符的用户生成字符串来防止 SQL 注入。该指令接受一个或两个参数:要引用的变量名,以及可选的输入变量(如果希望就地编辑的话)。当应用该指令时,它会在变量内容中添加必要的转义字符,例如反斜杠和单引号,以确保这些内容可以安全地嵌入到 SQL 语句中,而不会改变语义或功能。
在大多数情况下,指定一个变量作为参数就足够了。该指令处理被赋值的字符串,查找需要为安全 SQL 操作而引用的字符,然后将结果存回指定的变量。如果省略第二个参数,指令会就地修改原始变量。这在保存复杂值或希望通过避免额外的变量分配来最小化内存使用时尤为有用。
配置示例
location /bar {
set $foo "hello\n\n'\"\\";
set_quote_sql_str $foo;
# Now $foo is: 'hello\n\n\'\"\\'
}⚠
在调用此指令之前,确保该变量包含字符串值;否则,结果可能不符合预期。
⚠
避免在已包含 SQL 注入漏洞的变量上使用该指令;在进行引用之前先对输入进行消毒。