【问题标题】:Securely passing hidden id for nested forms on Rails为 Rails 上的嵌套表单安全传递隐藏 id
【发布时间】:2015-02-25 20:39:03
【问题描述】:

我有用户和个人资料模型。用户has_one 配置文件其中belongs_to 用户。 Profile 还有accepts_nested_attributes_for :user,我正在为Profile 构建一个表单,它也为用户提供一些属性。

为了更新(未创建)我的profile.user,我必须在用户表单的嵌套属性下提供id,我通过隐藏输入来完成。

问题在于我认为这不安全,因为可能会更改客户端的 id,而服务器会更新另一个用户实例,而不是配置文件的实例。

为了避免这种情况,在 Profile 的控制器上,我手动将 user_attributes 的 ID 附加到与 current_user.id 对应的参数上,但我认为这不是最好的方法。

是否有任何其他方法可以确保 Rails 更新实际配置文件的用户,或者,如果客户端提供的用户 ID 与 profile.user 不同,它会阻止它吗?

【问题讨论】:

    标签: ruby-on-rails forms security nested-attributes


    【解决方案1】:

    如果您使用URI,例如/user/123/profile,您可以从URI params 获取用户ID,并将其与current_user.id 进行比较,如果它们匹配,则很好,如果不匹配,则错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多