在 Rails 3 中,我们可以定义可访问的属性:
attr_accessible :rating, :review
在这个模型中,有额外user_id
的保护以防止伪造/黑客攻击。此值在控制器中分配:
@review.user_id = current_user.id
如果我使用 Firebug 手动包含user_id
,它将成为 的一部分params[:review]
,但当然由于user_id
未在 中定义attr_accessible
,它不会被保存到数据库中。这种情况是相当安全的。
问题 1
我在Rails 3 In Action一书中读到,Yehuda Katz 包含.delete
了在执行进一步操作之前删除未经授权的参数的方法:params[:review].delete(:user_id)
. 我是否应该也包含此内容以进一步保护我的应用程序,还是忽略此步骤?
问题2
如果我应该包含上面的方法,我想要将.delete_all_except
它剥离到参数中允许的属性。我怎么做?
谢谢。