Rails - 恶意用户覆盖用户名

时间:2012-12-04 19:29:52

标签: ruby-on-rails forms security attributes

想象一下,您拥有一个具有用户名和其他几个属性的用户模型。用户只能在唱歌时设置用户名,而不能在编辑他的个人资料时设置。

但是,:user_name属性需要通过注册表单的用户模型中的attr_accessible访问。

这让我想知道恶意用户是否可以更改允许他编辑其个人资料的表单,并将输入名称更改为user_name,从而实际上在提交时更改它。

我是否正确,即恶意用户可以这样做,还是Ruby会以某种方式发现表单已被更改?如果这是一个安全问题,如何在更新方法中始终重置用户名?是否有一种区分可访问和可访问但不可编辑的属性的方法?

1 个答案:

答案 0 :(得分:1)

不,由于Rails的CSRF反制措施,这是不可能的。请参阅this guide

您的应用程序控制器中应该有以下行:

protect_from_forgery :secret => "123456789012345678901234567890..." 

另请参阅以下文章,了解有关XSS的更多信息,其中详细介绍了可能采取的措施和应对措施。

始终sanitize()输入。