gpt4 book ai didi

ruby-on-rails - rails : mass-assignment security concern with belongs_to relationships

转载 作者:行者123 更新时间:2023-12-04 03:45:34 25 4
gpt4 key购买 nike

我一直在阅读有关 Rails 安全问题的文章,其中最让我担心的是批量分配。我的应用程序正在使用 attr_accessible,但是我不确定我是否完全知道处理公开关系的最佳方法是什么。假设我们有一个基本的内容创建/所有权网站。用户可以创建博客文章,并拥有一个与该博客文章相关联的类别。

所以我有三个模型:

  • 用户
  • 发帖:属于一个用户和一个类别
  • 类别:属于用户

  • 我允许对 category_id 进行批量分配,因此用户可以将其清除,将其更改为他们的类别之一,或者通过批量分配,我想他们可以将其更改为其他人的类别。这就是我不确定最好的继续方式的地方。

    我调查过的资源(特别是从该 railscast 提供的 railscast #178resource)都提到关联不应该是可批量分配的,这是有道理的。我只是不确定如何允许用户更改 类别 发帖 将是在一种荒谬的方式。

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

    更新 : 希望能进一步澄清我的担忧。

    假设我在 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

    这似乎是很多工作?我需要检查更新和创建操作中的每个 Controller 。请记住,belongs_to 关系不止一种。

    最佳答案

    我想您的用户可以通过某种编辑形式更改它。

    基于此,Mass Assignment 真的适合那些试图通过 curl 之类的东西来干扰你的应用程序的邪恶类型。我称他们为卷发小子。

    所有这些,如果你使用 attr_protected - (在这里你把你不想让他们改变的字段)或者 child 最喜欢的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

    关于ruby-on-rails - rails : mass-assignment security concern with belongs_to relationships,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2159087/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com