【发布时间】:2018-03-08 14:51:30
【问题描述】:
我有一个 postgres jsonb 查询如下:
Blog.where("upload_data @> '[ { \"name\": \"#{name}\" }]'")
这可行但会破坏构建,因为优秀的刹车员指出了可能的 sql 注入风险。如果我使用绑定变量:
Blog.where("upload_data @> '[ { \"name\": ? }]'", name)
它创建一个类似的 sql 查询:
WHERE upload_data @> '[ { "name": 'name' }]'
注意单引号 - 这是一个无效的查询
如果我使用单引号,我会得到:
WHERE upload_data @> "[ { 'name': 'name' }]"
这是无效的
我尝试了其他一些方法,但我想要的是绑定变量评估为带双引号的字符串:
WHERE upload_data @> '[ { "name": "name" }]'
或者其他解决方案 - 除了让刹车员跳过文件。
【问题讨论】:
标签: ruby-on-rails postgresql sql-injection jsonb