我知道在调用时使用插值字符串是不安全的.where。
.where
例如:
Client.where("orders_count = #{params[:orders]}")
应该改写为:
Client.where("orders_count = ?", params[:orders])
调用时使用插值字符串是否安全.order?如果不是,应如何改写以下内容?
.order
Client.order("#{some_value_1}, #{some_value_2}")
是的,ActiveRecord的是鈥涣刻申鈥方法 是 容易受到SQL注入。
不,这 不是 安全打电话时使用插值的字符串.order。
上述问题的答案已经由亚伦·帕特森(Aaron Patterson)确认,他将我指向http://rails- sqli.org/#order。在该页面上:
在ORDER BY子句中利用SQL注入是很棘手的,但是CASE语句可用于测试其他字段,将sort列切换为true或false。尽管可能需要执行许多查询,但攻击者可以确定该字段的值。
因此,重要的是手动检查一切order安全的东西。也许通过使用类似于@dmcnally的建议的方法。
order
谢谢大家