Ruby on rails 如果我将所有db列都放在attr_accessible中,那么我是否可以免受大规模分配攻击?
我知道Rails 3.2的所有属性本质上都是“黑名单”,这迫使您通过Ruby on rails 如果我将所有db列都放在attr_accessible中,那么我是否可以免受大规模分配攻击?,ruby-on-rails,ruby-on-rails-3,mass-assignment,attr-accessible,Ruby On Rails,Ruby On Rails 3,Mass Assignment,Attr Accessible,我知道Rails 3.2的所有属性本质上都是“黑名单”,这迫使您通过attr\u accessible将每个属性列入白名单 然而,如果我让表中的每一列都可以访问attr\u,这难道不会让我容易受到大规模分配攻击吗 若否,原因为何 如果是这样的话,强制白名单有什么意义 这是一个真正的问题,因为我的一个生产应用程序我被迫有这样的东西,只是为了让Desive工作: attr_accessible :email, :password, :password_confirmation, :remember_
attr\u accessible
将每个属性列入白名单
然而,如果我让表中的每一列都可以访问attr\u
,这难道不会让我容易受到大规模分配攻击吗
若否,原因为何
如果是这样的话,强制白名单有什么意义
这是一个真正的问题,因为我的一个生产应用程序我被迫有这样的东西,只是为了让Desive工作:
attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :confirmed_at, :confirmation_token
想法?在您的示例中,只有两个字段可用于利用身份验证过程,即确认标记和确认标记。但在用户确认他的电子邮件之前,他们不能被更改,所以在您更改Desive的默认行为之前,这里没有问题。我也不明白为什么你必须让他们可以访问。列出的列很容易受到攻击,因为如果你让用户通过批量分配更新这些记录,那么他们就可以更新这些列。请记住,如果只是执行
user.foo='blah'
,则不需要使字段可访问-只需要调用更新属性、创建等等
更改默认值的目的是让您几乎不可能忘记这一点:因为您必须将属性列为白名单,您必须考虑是否可以访问这些字段。问问自己,如果他们可以更改允许他们更新的记录上的字段,那么攻击可以完成什么
attr_可访问模型正在嘎吱嘎吱作响——不久前rails博客上有一篇关于他们正在尝试的一种新的控制器级方法的帖子。我相信这个链接可能会帮助你:@gabrielhilal我更多的是寻找一个理论上的解释,而不是我的问题的具体代码。因为我是一个特殊的设计模块使用
:confirmable
…需要设置这些字段。如果您不知道如何使用monkeypatch设计模块来删除此行为,您可以使用attr\u accessible with role,例如as:user,然后使用assign\u attributes with as:user。我问的是一个理论问题……如果我的attr\u accessible
中有很多列,我还会受到大规模分配攻击吗?