想象一下,您拥有一个具有用户名和其他几个属性的用户模型。用户只能在唱歌时设置用户名,而不能在编辑他的个人资料时设置。
但是,:user_name属性需要通过注册表单的用户模型中的attr_accessible访问。
这让我想知道恶意用户是否可以更改允许他编辑其个人资料的表单,并将输入名称更改为user_name,从而实际上在提交时更改它。
我是否正确,即恶意用户可以这样做,还是Ruby会以某种方式发现表单已被更改?如果这是一个安全问题,如何在更新方法中始终重置用户名?是否有一种区分可访问和可访问但不可编辑的属性的方法?
答案 0 :(得分:1)
不,由于Rails的CSRF反制措施,这是不可能的。请参阅this guide。
您的应用程序控制器中应该有以下行:
protect_from_forgery :secret => "123456789012345678901234567890..."
另请参阅以下文章,了解有关XSS的更多信息,其中详细介绍了可能采取的措施和应对措施。
始终sanitize()
输入。