一尘不染

ActiveRecord的“更”方法是否容易受到SQL注入的攻击?

sql

我知道在调用时使用插值字符串是不安全的.where

例如:

Client.where("orders_count = #{params[:orders]}")

应该改写为:

Client.where("orders_count = ?", params[:orders])

调用时使用插值字符串是否安全.order?如果不是,应如何改写以下内容?

Client.order("#{some_value_1}, #{some_value_2}")


阅读 137

收藏
2021-05-05

共1个答案

一尘不染

是的,ActiveRecord的是鈥涣刻申鈥方法 容易受到SQL注入。

不,这 不是 安全打电话时使用插值的字符串.order

上述问题的答案已经由亚伦·帕特森Aaron
Patterson)
确认,他将我指向http://rails-
sqli.org/#order。在该页面上:

在ORDER
BY子句中利用SQL注入是很棘手的,但是CASE语句可用于测试其他字段,将sort列切换为true或false。尽管可能需要执行许多查询,但攻击者可以确定该字段的值。

因此,重要的是手动检查一切order安全的东西。也许通过使用类似于@dmcnally的建议的方法。

谢谢大家

2021-05-05