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

ruby-on-rails – Rails安全性:完全避免大规模分配

发布时间:2020-12-17 01:44:52 所属栏目:百科 来源:网络整理
导读:我倾向于不需要生产代码中的 mass-assignment功能. (在我的测试代码中,我经常使用它,但在这些情况下,我确实想要设置任意列.) 因此,如果在我的生产代码中,我只是避免使用这些形式: Article.new(params[:article]) # or createarticle.attributes = params[:a
我倾向于不需要生产代码中的 mass-assignment功能. (在我的测试代码中,我经常使用它,但在这些情况下,我确实想要设置任意列.)

因此,如果在我的生产代码中,我只是避免使用这些形式:

Article.new(params[:article])  # or create
article.attributes = params[:article]
article.update_attributes(params[:article])

而是始终手动枚举所有属性,如下所示:

Article.new(:title => params[:article][:title],:body => params[:article][:body],...)

我是否从质量分配安全问题中解脱出来(即使不使用attr_accessible / attr_protected)?

编辑:我不只是禁用批量分配的原因是,我希望能够编写Article.create!(::blog_id => @ blog.id,…),其中blog_id是“unsave”属性.

解决方法

是的,使用第二种方法,您可以安全地从用户分配其他属性.

这是一种干燥的写作方式,但是:

Article.new(params[:article].slice(:title,:body))

-要么-

def article_params
  params[:article].slice(:title,:body)
end

Article.new(article_params)  # or create
article.attributes = article_params
article.update_attributes(article_params)

(编辑:李大同)

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

    推荐文章
      热点阅读