应该保护哪些字段不受批量分配?

Pet*_*own 0 security ruby-on-rails

我正在对Rails 2.3.8应用程序进行安全审计,其中一个问题是我们缺少attr_protectedattr_accessible在我的模型定义中.我理解他们背后的原因,甚至写了一个宝石来协助大规模分配,但我正在寻找可能会遗漏的属性.

我遇到的问题是确定哪些字段应该受到保护.人们通常会遵循这些规则吗?我在想像外键和像管理员这样的布尔值?保护会有意义.我也想知道像STI类型和多态*_type/*_ id字段这样的字段.我看到Rails 3引入了默认保护的属性,但Rails 2.3.8似乎没有这个.

任何有关这方面的指导将不胜感激.

Dav*_*ulc 5

我的一般经验法则是,您不希望用户修改的任何属性都应受到保护.

所以在我的模型中,我使用attr_accessible了作为表单中的字段存在的所有属性.所有其他人都受到保护 (我宁愿默认保护所有内容.)

换句话说:假设客户端发送的所有数据都将被恶意篡改.

编辑:相关博客文章http://www.kalzumeus.com/2010/09/22/security-lessons-learned-from-the-diaspora-launch/