【问题标题】:How to permit all attributes besides user_id using strong_parameters?如何使用 strong_parameters 允许除 user_id 之外的所有属性?
【发布时间】:2013-03-20 16:00:52
【问题描述】:

我想使用类似的东西:

def answer_params
  params.require(:answer).permit!.without(:user_id)
end

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 strong-parameters


    【解决方案1】:

    这行得通吗?

    params.require(:answer).permit!.except(:user_id)
    

    【讨论】:

    • 尽管解决方案是正确的,但重要的是要记住(关于原始问题)这是一个危险的解决方案。在处理允许的属性时,您应该使用白名单方法,而不是黑名单。
    • @SimoneCarletti 在许多情况下,白名单方法确实是过度的,而黑名单绝不是危险的。并非每个模型都代表着重大的安全威胁。需要根据具体情况评估威胁。
    • @ChrisNicola 我对你的评论投了票,我认为应该有一个禁止方法,而且阻止危险的参数对我来说更有意义
    【解决方案2】:

    我只是想把它放在这里,白名单不是 DRY。想象一个基于文档的条目的 JSON API,它可能有多达 100 个(或更多)属性(键值对)。通常,您需要关注的唯一部分是可以提升权限的属性,例如 user_id。

    【讨论】:

    • 只是可以将白名单从控制器中分离出来,并在多个类中重用。这将解决问题。
    猜你喜欢
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 2018-11-20
    • 2020-11-04
    • 2021-03-24
    • 2011-09-08
    相关资源
    最近更新 更多