Rails:关注Sql注入?

时间:2013-03-18 05:48:06

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

我的控制器找到一个用户:

@user = User.find_by_identifier!(params[:id])

在我的用户模型中,我有

class User < ActiveRecord::Base

      def to_param
        identifier
      end

private 

  def create_identifier
    SecureRandom.urlsafe_base64(9)
  end
end

问题:从SQL注入点可以安全吗?怎么这样,因为尽管阅读了各种文章,我仍然不知道SQL注入。

1 个答案:

答案 0 :(得分:2)

在我自己的控制台中进行快速实验表明find_by_identifier!可以安全地防止SQL注入。

irb(main):005:0> User.find_by_email! "i am sneaky '; drop table woot;"
  User Load (0.8ms)  SELECT "users".* FROM "users" WHERE "users"."email" = 'derp ''; drop table woot;' LIMIT 1

请注意生成的SQL查询如何转义恶意单引号。

我认为模型中的to_paramcreate_identifier无关紧要。