Rails3中的attr_accessible、attr_protected和Rails4+的强制参数
来源:互联网 发布:白银之瞳的前夜 知乎 编辑:程序博客网 时间:2024/06/15 19:20
attr_accessible、attr_protected这两个方法最后可用的版本为rails3.2.13,用于在对model进行大量赋值时,通过指定白名单(attr_accessible)或黑名单(attr_protected)的方式,确保安全性。
attr_accessibleh和attr_protected区别的详细说明。
在rails4中,对大量赋值的控制提升到了controller层,采用强参的方式进行限制,故这两个方法被废除。
class PeopleController < ActionController::Base # This will raise an ActiveModel::ForbiddenAttributes exception # because it's using mass assignment without an explicit permit # step. def create #可以指定params.permit!强制允许大量赋值,但为了系统安全性,需要参照update的处理方式,列出可以通过大量赋值(mass assignment)更改属性的白名单列表。 params.permit! Person.create(params[:person]) end # This will pass with flying colors as long as there's a person key # in the parameters, otherwise it'll raise a # ActionController::ParameterMissing exception, which will get # caught by ActionController::Base and turned into that 400 Bad # Request reply. def update person = current_account.people.find(params[:id]) person.update_attributes!(person_params) redirect_to person end private # Using a private method to encapsulate the permissible parameters # is just a good pattern since you'll be able to reuse the same # permit list between create and update. Also, you can specialize # this method with per-user checking of permissible attributes. def person_params #列举白名单列表 params.require(:person).permit(:name, :age) end end
因为手上的项目需要从Rails3.2升级到Rails4.0,为了进行平滑升级,可以指定配置
config.action_controller.permit_all_parameters = true
允许Rails4+对大量赋值的应用,另外,为了保证系统安全性,对于安全性要求高的业务场景,需要通过指定白名单的方式进行赋值。
参考资料
- http://guides.rubyonrails.org/action_controller_overview.html#strong-parameters
- http://stackoverflow.com/questions/18092475/in-rails-4-disable-strong-parameters-by-default
- http://api.rubyonrails.org/classes/ActionController/Parameters.html
- https://ihower.tw/rails4/security.html
0 0
- Rails3中的attr_accessible、attr_protected和Rails4+的强制参数
- rails 表单数据保护(attr_protected、 attr_accessible)
- Rails3.2.2到Rails4.0.0升级笔记
- attr_accessible
- rails3.2 中的 carrierwave 的快速开发
- Rails4 ActionCable的使用
- Rails3的部署问题
- linecache19在rails3中的安装
- 【C#中的as和强制转换的区别】
- rails4 ,用js改变div的背景图片
- rails4的Head First Rails Demos命令
- 创建支持rails4.1.1的refinerycms项目
- Rails4 与 3的一些区别
- rails4 中使用分页的方法
- Rails4版本的ActiveModel::ForbiddenAttributesError错误
- fedora15 配置rails3 和mysql
- Rails3处理css和js
- Rails3: 新的 Metal 機制
- 腾讯面试题——英文单词间的最短转换路径
- js笔记——call,apply,bind使用笔记
- 《Head First 设计模式》读书笔记
- ArrayList
- javaScript实现的数据结构
- Rails3中的attr_accessible、attr_protected和Rails4+的强制参数
- Mariadb数据备份恢复xtrabackup使用
- 生产环境下的Java排错调优视频教程推荐
- mysql数据库中文乱码
- C#图片压缩的实现方法
- Pspcidtable遍历进程
- 比特币学习-图灵不完备的脚本语言
- memcache的一致性hash算法使用
- 【Medium】75. Sort Colors