加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby on rails确实update_attributes可以防止sql注入吗?

发布时间:2020-12-17 01:22:34 所属栏目:百科 来源:网络整理
导读:update_attributes是否可以防止sql注入? 例: if @user.update_attributes(params[:user]) # updated end 我知道find(),{}和[]做find:conditions,但是没有看到关于这个方法的任何信息. 解决方法 是的,它确实.在内部,它只是循环遍历所有属性,设置它们的值然
update_attributes是否可以防止sql注入?

例:

if @user.update_attributes(params[:user])
     # updated
 end

我知道find(),{}和[]做find:conditions,但是没有看到关于这个方法的任何信息.

解决方法

是的,它确实.在内部,它只是循环遍历所有属性,设置它们的值然后调用save!

def update_attributes(attributes)
  with_transaction_returning_status do
    self.attributes = attributes
    save
  end
end

def attributes=(new_attributes,guard_protected_attributes = true)
  ...
  attributes.each do |k,v|
    if k.include?("(")
      multi_parameter_attributes << [ k,v ]
    elsif respond_to?("#{k}=")
      send("#{k}=",v)
    else
      raise(UnknownAttributeError,"unknown attribute: #{k}")
    end
  end
end

换句话说,它的作用是什么

m.update_attributes(:attr1 => "foo",:attr2 => "bar")

m.attr1 = "foo"
m.attr2 = "bar"
m.save

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读