【问题标题】:Is ActiveRecord's order method safe for inserting user-entered strings?ActiveRecord 的 order 方法对于插入用户输入的字符串是否安全?
【发布时间】:2013-04-16 17:47:16
【问题描述】:

我想在 Rails 中做这样的事情:

People.order("#{params[:sort]}, first_name, middle_name, last_name")

这样安全吗?还是我需要自己解析params[:sort] 并确保它是一个有效列的列表?我不介意出现数据库错误,但我不能有 SQL 注入的可能性。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 rails-activerecord ruby-on-rails-4


    【解决方案1】:

    【讨论】:

    • 我想要一个逗号分隔的属性列表,但这回答了我的问题。谢谢
    【解决方案2】:

    你可以这样做:

    if People.attribute_names.include?(params[:sort].to_s)
      People.order("#{params[:sort]}, first_name, middle_name, last_name")
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-08
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      相关资源
      最近更新 更多