2010年5月12日星期三

关于Rails程序安全性

问题

默热情况下ActiveRecord允许访问者更新所有字段,以及子表字段。
这就让系统中的敏感字段暴露在外。

ActiveRecord里面提供了一下两个函数来声明可以改变的字段。
attr_accessible attr_protected

但是在实际使用中,极为不便,因为
ActiveRecord.new
ActiveRecord.update_attributes
的方法将无法正常使用

当然你可以为每个属性赋值,但这个不是聪明的做法。

问题所在不是出现在ActiveRecord上面。
而是应该在ActiveController上屏蔽一些敏感Parameter

寻找良久,以下这个Plugin应该是一个最为完善的解决方案吧。
据说这个是从Merb里面研究出来的,我想Rails3可能会有直接支持吧。

http://github.com/cjbottaro/param_protected


参看以下链接
http://railspikes.com/2008/9/22/is-your-rails-application-safe-from-mass-assignment

安全检查工具
http://thinkrelevance.com/blog/2008/02/26/tarantula-vs-your-rails-app.html

没有评论: