ActiveRecord的订购方法是否可以安全地插入用户输入的字符串?

时间:2013-04-16 17:47:16

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

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

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

这样安全吗?或者我是否需要自己解析params[:sort]并确保它是事先列出的有效列?我不介意收到数据库错误,但我无法进行SQL注入。

2 个答案:

答案 0 :(得分:0)

你可以这样做:

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

答案 1 :(得分:0)