在rails 3.2.x中,我可以在我的用户模型中执行此操作:
attr_accessible :email
以下代码在从命令行运行时会引发MassAssignmentSecurity错误(因为无法访问password_reset_sent_at):
User.new(password_reset_sent_at: Time.zone.now)
现在,通过切换到strong_parameters,上面的代码将执行而不会引发任何错误。
我猜测rails将此类命令行输入视为值得信赖,因为它只能来自开发人员。我应该认为这样安全吗?我假设攻击者只有在他/她有命令行访问权限的情况下才能提交上述代码?只是有点困惑,在最近几天这么多。
答案 0 :(得分:2)
你绝对可以认为它是安全的,因为如果攻击者通过命令行访问你的rails应用程序安全性完全消失了,他将有很多可能恶意更改数据库中的数据。
使用strong_parameters
gem可以控制控制器中的质量分配,这是执行此操作的最佳位置。其中一个目标是阻止您在不需要保护时遇到质量分配问题,例如:在控制台或模型测试中。