You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Snowflake中使用LIKE关键字时如何防范SQL注入?

Snowflake LIKE语句参数化防SQL注入解决方案

针对你遇到的SHOW语句中LIKE关键字的参数化问题,以下是两种可靠的解决方案,既保证功能正常又能防范SQL注入:

方案1:直接使用参数化占位符(推荐)

SHOW类元数据语句中的LIKE匹配值属于字符串字面量,直接使用:N占位符即可,不要在占位符周围加单引号,参数化机制会自动处理字符串的转义和引号包裹。

示例代码:

# 精确匹配用户
query = "SHOW USERS LIKE :1"
params = ('some_user',)
conn.cursor().execute(query, params)

# 模糊匹配(比如匹配以some_开头的用户)
query = "SHOW USERS LIKE :1"
params = ('some_%',)
conn.cursor().execute(query, params)

这种方式会自动转义参数中的特殊字符(如单引号),彻底避免SQL注入风险。

方案2:用EXECUTE IMMEDIATE包裹动态SQL(兼容特殊场景)

如果遇到部分SHOW语句参数绑定不生效的情况,可通过EXECUTE IMMEDIATE构建动态SQL,再通过USING子句传递参数,确保注入防护:

示例代码:

query = """
EXECUTE IMMEDIATE 'SHOW USERS LIKE :1' USING :1
"""
params = ('some_user%',)
conn.cursor().execute(query, params)

关键注意事项

  • IDENTIFIER(:N)仅用于表、列、数据库等对象名的参数化,字符串字面量(如LIKE的匹配值)直接用:N即可。
  • 绝对不要手动拼接字符串构建LIKE条件,也不要在占位符周围加单引号,否则会破坏参数化防护,引入注入风险。

内容的提问来源于stack exchange,提问作者slobokv83

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 12:15:32