Sql Rails中的用户查询字符串
从用户处获取字符串并在查询的Sql Rails中的用户查询字符串,sql,ruby-on-rails,ruby-on-rails-4,Sql,Ruby On Rails,Ruby On Rails 4,从用户处获取字符串并在查询的WHERE语句中使用它的最佳安全方法是什么 假设我有一个名为DB的模型,它包含列c1和c2。我希望用户能够给我一个字符串,比如str=“c1:value1”或str=“c1:value1,c2:value2”,以便使用它执行查找(DB.find(str))。当然,我不希望他/她能够执行SQL注入。有一种优雅的方法吗?这里要避免的最重要的事情是将用户响应直接放入where子句中。所以不要做类似DB.where(“c1=value”)的事情。相反,您可以依靠rails内置
WHERE
语句中使用它的最佳安全方法是什么
假设我有一个名为DB的模型,它包含列
c1
和c2
。我希望用户能够给我一个字符串,比如str=“c1:value1”
或str=“c1:value1,c2:value2”
,以便使用它执行查找(DB.find(str)
)。当然,我不希望他/她能够执行SQL注入。有一种优雅的方法吗?这里要避免的最重要的事情是将用户响应直接放入where子句中。所以不要做类似DB.where(“c1=value”)的事情。相反,您可以依靠rails内置的sql清理,方法如下
其中(“c1t=?”,值)
AR文档对此非常清楚。
如果字符串格式是固定的,则可以将其转换为哈希
,然后将其应用于#where
子句
string = "c1: value1, c2: value2"
hash = Hash[*string.split(/[,:]/).map(&:strip)]
DB.where(hash)
是否有一种优雅的方法可以使用此方法多次检查相同的值?类似于DB.where(“c1t=?或c2t=?”,value,value)(没有多次重复值)。对于sqlno,还有其他方法。谢谢