Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如果我将所有db列都放在attr_accessible中,那么我是否可以免受大规模分配攻击?_Ruby On Rails_Ruby On Rails 3_Mass Assignment_Attr Accessible - Fatal编程技术网

Ruby on rails 如果我将所有db列都放在attr_accessible中,那么我是否可以免受大规模分配攻击?

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_

我知道Rails 3.2的所有属性本质上都是“黑名单”,这迫使您通过
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
中有很多列,我还会受到大规模分配攻击吗?