2

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

尽管如此, :user_name 属性需要通过用户模型中的 attr_accessible 访问注册表单。

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

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

4

1 回答 1

1

不,由于 Rails 的 CSRF 对策,这是不可能的。请参阅本指南

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

protect_from_forgery :secret => "123456789012345678901234567890..." 

另请参阅以下文章以获取有关XSS的更多信息,该文章详细描述了可能采取的措施和应对措施。

始终sanitize()输入。

于 2012-12-04T19:35:33.417 回答