【问题标题】:Rails - Malicious user overriding user nameRails - 恶意用户覆盖用户名
【发布时间】:2025-12-17 02:25:02
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ruby-on-rails forms security attributes


    【解决方案1】:

    不,由于 Rails 的 CSRF 对策,这是不可能的。见this guide

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

    protect_from_forgery :secret => "123456789012345678901234567890..." 
    

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

    总是sanitize() 输入。

    【讨论】:

    • 太好了,这正是我所需要的。谢谢!