2

在 rails 3.2.x 中,我可以在我的用户模型中执行此操作:

attr_accessible :email

当从命令行运行时,以下代码会引发 MassAssignmentSecurity 错误(因为 password_reset_sent_at 不可访问):

User.new(password_reset_sent_at: Time.zone.now)

但是现在,切换到 strong_parameters 后,上面的代码将执行而不会引发任何错误。

我猜 Rails 认为这种命令行输入是值得信赖的,因为它只能来自开发人员。我应该认为这是安全的吗?我假设攻击者只有在他/她有命令行访问权限的情况下才能提交像上面这样的代码?只是有点迷茫,这几天要接受的东西太多了。

4

1 回答 1

2

您绝对可以认为它是安全的,因为如果攻击者通过命令行访问您的 Rails 应用程序,安全性将完全消失,他将有很多可能恶意更改数据库中的数据。

使用strong_parametersgem,您可以在控制器中控制质量分配,这是执行此操作的最佳位置。它的目标之一是在您不需要保护时(例如在控制台或模型测试中)阻止您为批量分配问题而苦苦挣扎。

于 2013-03-08T23:22:30.550 回答