【问题标题】:rails active record nuances and protecting against injection attacks跟踪活动记录细微差别并防止注入攻击
【发布时间】:2010-12-07 15:20:14
【问题描述】:

当我进行查询时...

使用 find_by 帮助器之间有什么有意义的区别吗?

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    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]] )
    

    【讨论】:

      【解决方案2】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-18
        • 1970-01-01
        • 2020-02-24
        • 2018-08-08
        • 1970-01-01
        • 1970-01-01
        • 2012-03-19
        • 2015-04-14
        相关资源
        最近更新 更多