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

ruby-on-rails – rails:与belongs_to关系的大规模分配安全问题

发布时间:2020-12-17 03:11:38 所属栏目:百科 来源:网络整理
导读:我一直在阅读关于rails安全问题的内容,而让我最关心的是大规模分配.我的应用程序正在使用attr_accessible,但是我不确定我是否完全知道处理暴露关系的最佳方法是什么.假设我们有一个基本的内容创建/所有权网站.用户可以创建博客帖子,并且具有与该博客帖子相关
我一直在阅读关于rails安全问题的内容,而让我最关心的是大规模分配.我的应用程序正在使用attr_accessible,但是我不确定我是否完全知道处理暴露关系的最佳方法是什么.假设我们有一个基本的内容创建/所有权网站.用户可以创建博客帖子,并且具有与该博客帖子相关联的一个类别.

所以我有三个型号:

>用户
> post:属于用户和类别
>类别:属于用户

我允许在category_id上进行质量分配,因此用户可以将其取消,将其更改为其中一个类别,或通过批量分配,我认为他们可以将其更改为其他人的类别.这就是我不确定最好的方法是什么.

我调查的资源(特别是railscast #178和resource由该railscast提供)都提到该关联不应该是可批量分配的,这是有道理的.我只是不确定如何允许用户改变帖子类别的方式.

关于如何最好地解决这个问题的想法?我看错了吗?

更新:希望更多地澄清我的担忧.

假设我在Post,我是否需要以下内容:

def create
  @post = Post.new(params[:category])

  @post.user_id = current_user.id

  # CHECK HERE IF REQUESTED CATEGORY_ID IS OWNED BY USER

  # continue on as normal here
end

这似乎很多工作?我需要在更新和创建操作中检查每个控制器上的内容.请记住,不仅有一个belongs_to关系.

解决方法

我认为,您的用户可以通过某种编辑形式对其进行更改.

基于此,Mass Assignment真的适用于那些试图通过卷曲之类的东西搞乱你的应用程序的邪恶类型.我称他们为卷发小子.

所有这一切,如果你使用attr_protected – (这里你把你不希望他们改变的字段)或孩子最喜欢的attr_accessible(可以改变的字段).

你会听到两者的争论,但如果你在模型中使用attr_protected:user_id,然后在你的CategoryController #create动作中你可以做类似的事情

def create
  @category = Category.new(params[:category])

  @category.user_id = current_user.id
  respond_to do |format|
....#continue on as normal here
end

(编辑:李大同)

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

    推荐文章
      热点阅读