使用join的范围使SQL安全

时间:2013-02-07 03:32:50

标签: ruby-on-rails sql-injection rails-activerecord

我有一个范围可以返回用户也可以访问的项目列表。要么他们在参与者列表中,要么他们拥有列出的项目。查询工作正常,但不是SQL安全。我无法弄清楚如何使JOIN安全。 where子句是安全的,但尝试使用join不起作用。我似乎无法在这里找到文档或答案。猜猜我错过了一些基本的东西。

scope :manageable_by_user, lambda { |user| 
  joins("LEFT JOIN participants ON 
         participants.project_id = projects.id 
         AND participants.user_id = #{user.id}").
  where("projects.user_id = ? OR projects.user_id IS NOT NULL",user.id)
}

1 个答案:

答案 0 :(得分:1)

使用ActiveRecord::Base.sanitize(string)