【问题标题】:Ruby on Rails: What prevents a user from adding a form field to a form?Ruby on Rails:是什么阻止用户向表单添加表单域?
【发布时间】:2013-04-03 09:28:54
【问题描述】:

如果我在 Rails 中有一个表单,并且我只想向用户公开某些字段,如何防止用户破解表单并添加其他字段以插入不需要的数据?

例如,假设我有一个包含以下列的 task.rb 模型:名称、描述、internal_notes。对于“app/views/tasks/new.html.erb”中的公共表单,我只想像这样公开公共字段:

form
  name:
  description:
/form

如何防止用户入侵表单并执行此操作:

form
  name:
  description:
  internal_notes:  <--- inserted by user (e.g. through Google Chrome Elements)
/form

例如,用户可以在表单中输入&lt;input type="text" name="task[internal_notes]" /&gt;,然后提交不需要的数据。

有没有办法防止这种情况发生?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    这就是为什么存在两个非常有用的 ActiveRecord 类方法的原因:

    查看有关MassAssignment 的文档以更好地理解它。

    【讨论】:

    • 还应该提到 protect_from_forgery 和相应的 xsrf 令牌。
    【解决方案2】:

    我建议使用 strong_parameters gem,因为它将成为 Rails 4 中 MassAssignment 保护的标准解决方案

    【讨论】:

    • 很棒的提示。非常感激。谢谢丹 :)
    猜你喜欢
    • 1970-01-01
    • 2012-03-21
    • 2017-05-24
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多