保护预填表格字段不被用户覆盖(Rails)

时间:2010-12-12 15:35:32

标签: ruby-on-rails security attributes overwrite

我有一个注册表单,其中大多数字段都是使用用户的Facebook帐户预先填写的。我想制作一些字段,比如 - 电子邮件,用户无法覆盖。任何想法如何解决这个问题?

更新 也许这会更有意义......我所拥有的是一种注册形式,即:

  1. 首先预先填写来自用户Facebook帐户的信息,
  2. 然后用户必须填写一些额外的字段,如密码。
  3. 提交表单时,使用该表单数据创建新用户。
  4. 我想要的是确保我从 Facebook 获得并用于预填充注册表单的电子邮件在我创建新用户记录时是相同的。

    我需要一种方法来比较我从Facebook收到的电子邮件和我在提交表单时收到的电子邮件,或者某种方式禁止用户编辑该字段。

    我在考虑将电子邮件存储到用户会话中......但这听起来不对......

    谢谢!

2 个答案:

答案 0 :(得分:2)

您可以在HTML中禁用输入字段。这会阻止用户编辑值。然而,像firebug这样的工具使得“破解”它变得微不足道。大多数人不会,通常这就足够了。

如果你真的想强制执行它,你必须在将它们发送到数据库之前删除服务器端的参数。一种方法是实现自己的dynamic attr_accessible。另一种方法是从params散列中删除它们。

答案 1 :(得分:0)

如你所说,我会在会话中存储你想要保留的任何内容。当然,您不能信任用户提交的任何内容,因此您在服务器端收到的任何重要内容都需要保留。

如果您不希望他们能够更改电子邮件,则没有理由为电子邮件提供输入字段。我只是展示它。

您可能需要考虑在电子邮件中使用attr_protected :email(或者更好地使用attr_accessible),这样您就可以确定该字段没有无意的更新。