rails活跃记录细微差别并防止注入攻击

时间:2009-10-17 15:55:41

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

当我进行查询时......

使用find_by助手之间是否有任何有意义的区别?

在做这样的事情时,我是否有任何理由忽视选择较短的代码行?

Booking.find_all_by_user_id(1, :joins => :confirmation)

Booking.find(:all, :joins => :confirmation, :conditions => [ 'bookings.user_id = ?', 1] )

2 个答案:

答案 0 :(得分:3)

不,关于注射攻击。 find_by方法应该是安全的。然而,唯一的杀手锏是在使用conditions方法时直接在find参数中使用用户输入,例如:

Booking.find(:all, :joins => :confirmation, :conditions => [ 'bookings.user_id = #{params[user_id]]}'] )

当然正确的方法就是你做的方式,find方法会过滤掉。

Booking.find(:all, :joins => :confirmation, :conditions => [ 'bookings.user_id = ?', params[user_id]] )

答案 1 :(得分:2)