attr_protected、 attr_accessible 解析
1:为什么使用这两个方法:
我们提交一个表单,该表单中有一些不可以让用户提交的字段,例如‘激活(active)’字段、‘用户权限(purview)’字段,但是怀有恶意的用户可以模拟表单提交这些属性,可以随意的给自己权限,而我们控制器中的取得属性的代码是Account.new(params[:account]),这句代码,会接受所有的用户模拟提交的account下的信息,此时我们不希望发生的事情发生了,我们要防止这种情况的发生,可以使用以上两个方法。
2:方法解释:
attr_protected: 指定某些字段不可以通过块来赋值,也就是说Account.new(params[:account])将无法接受这些指定字段,那么我们可以attr_protected :active, :purview 指定这两个字段,后台不会再接受用户恶意提交的这两个字段。
attr_accessible: 和attr_protected相反,指定只用某些字段可以通过块来提交,也就是说Account.new(params[:account])只能接受指定的字段,这样也可以防止用户的恶意提交。
3: 总结:其实attr_accessible就是限制提交的字段,attr_protected限制后台块接受的字段,通过这两种方式来防止用户的恶意提交。
1:为什么使用这两个方法:
我们提交一个表单,该表单中有一些不可以让用户提交的字段,例如‘激活(active)’字段、‘用户权限(purview)’字段,但是怀有恶意的用户可以模拟表单提交这些属性,可以随意的给自己权限,而我们控制器中的取得属性的代码是Account.new(params[:account]),这句代码,会接受所有的用户模拟提交的account下的信息,此时我们不希望发生的事情发生了,我们要防止这种情况的发生,可以使用以上两个方法。
2:方法解释:
attr_protected: 指定某些字段不可以通过块来赋值,也就是说Account.new(params[:account])将无法接受这些指定字段,那么我们可以attr_protected :active, :purview 指定这两个字段,后台不会再接受用户恶意提交的这两个字段。
attr_accessible: 和attr_protected相反,指定只用某些字段可以通过块来提交,也就是说Account.new(params[:account])只能接受指定的字段,这样也可以防止用户的恶意提交。
3: 总结:其实attr_accessible就是限制提交的字段,attr_protected限制后台块接受的字段,通过这两种方式来防止用户的恶意提交。
发表评论
-
rails console 记录命令历史
2020-03-20 10:53 3511: 打开文件: vim ~/.irbrc,添加如下内容: ... -
mysql dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
2019-12-16 16:43 435今天一连串的神操作导致连接mysql一直报错,dyld: Li ... -
ruby gsub和sub 的特殊使用
2019-04-04 19:53 1043gsub和sub使用 常用的使 ... -
rails离线环境搭建相关命令
2018-12-17 09:35 4511:下载yum包: 环境搭建需要安装很多包,可以使用 yumd ... -
rails离线环境搭建相关命令
2018-12-17 09:35 4781:下载yum包: 环境搭建需要安装很多包,可以使用 yumd ... -
rails5 belongs_to 默认不能为空,报错must exist
2017-04-29 16:37 4851: 在config/application.rb设置 con ... -
随笔知识
2014-08-07 21:11 1836show-source: 查看方法在文件中的位置,show-s ... -
rails 中 group 按照一定的规则返回数据
2012-11-03 19:20 972has_many :user_resumes, class_n ... -
项目 经验
2012-10-10 15:53 01: user = User.first; user. ... -
数组使用will_paginate
2012-03-30 11:58 1437有的时候,在开发的过程中需要对模型数组进行分页,此时我们可以如 ... -
我的rails 编程规范
2012-01-16 15:19 8991: 属性中时间要已at结尾,例如created_at, ... -
html_safe
2012-01-12 13:56 1434html_safe: 可以保证(> < &am ... -
同时分页查找没有关联关系的多个表
2011-12-30 14:41 1292supplyinfos和seekinginfos两个表 需求: ... -
send_file ie下文件名乱码问题解决
2011-10-28 17:50 2478使用rails的send_file 实现下载功能时,type指 ... -
counter_cache的使用
2011-10-08 11:55 2735有点惭愧,做rails也2年了,竟然不会用co ... -
has_many 关联关系表单 提交
2011-04-18 17:16 1156class Author has_many :books ... -
belongs_to 多级关联关系
2011-04-12 14:18 1134有一种情况,是这样的c属于b,b属于a,但是我们有时候想建立c ... -
rails 根据异常显示特定的错误页面
2011-03-27 20:50 1178rescue_from 异常, :with => :a ... -
rails 笔记
2011-03-27 20:49 1745启动项目: ruby script/se ... -
rails 发送电子邮件(ActionMailer)
2011-03-27 20:49 36381: 复制以下配置邮件 ...
相关推荐
您可以将它们视为attr_protected和attr_accessible的控制器类似物。 安装 Rails的2.3.x版本 gem install param_protected -v "~> 1.0.0" Rails的3.0.x中 gem "param_protected" , "~> 2.0.0" 感谢提供了Rails 3...
不支持attr_protected 。 由于块的原因,可以为实例定义访问权限,而不仅仅是为类级别定义。 仍然可以定义类级别的可访问性,因此可以使用旧的attr_accessible :name 。 主要特点: 根据当前record状态添加可访问...
可访问强参数的属性 自动将 Rails 3 attr_accessible 转换为 Rails 4 强参数安装 $ gem install attr_accessible2strong_params用法 $ aa2sp [filename OR dirname OR .]运行aa2sp . 在您的 rails 根文件夹中,程序...
受保护的属性续 这是Rails 5+的社区的继续版本。... 此gem添加了attr_accessible和attr_protected类方法来声明属性的白色或黑色列表。 安装 将此行添加到您的应用程序的Gemfile : gem 'protected_attributes_continu
ActiveRecord :: Base attr_accessible :description , :title attr_accessible :image has_attached_file :imageend 为了处理附件,我正在使用 Paperclip。 我已经从下载并安装了 Plupload 在我连接了一些 ...
用于 Rails 的简单 PESEL(波兰语个人 ID 号)验证器和个人数据提取器。 Activepesel 库可作为 gem 使用。 在您的 Gemfile 中添加: gem 'activepesel' #在你的模型中: class User < ActiveRecord :: Base...
外部STI 通过关联使用继承扩展 STI。用法宝石档案: gem 'ext_sti', :git => 'git://github.com/fuCtor/ext_sti.git'楷模: ...end endclass ForumPost < Post attr_accessible :name ati_type :forumendclass Blo
`key`方法用于定义MongoMapper模型的字段,类似于Active Record中的`attr_accessor`或`attr_accessible`。 运行`rake db:migrate`,但请注意,MongoMapper不使用传统意义上的数据库迁移。这里的`migrate`任务实际上...
lazy_columns lazy_columns是一个Rails插件,可让您指定要在Active Record模型中延迟加载的列。 默认情况下,Active Records加载每个模型实例中的所有列。... attr_accessible :comments , :title en
attr_accessible :first_name , :last_name , :job_title , :member_since end 创建演示者: # app/presenters/user_presenter.rb class UserPresenter < ShortCircuit :: Presenter def first_name @user
PiggybakVariant Gem(引擎) Piggybak 的高级变体支持。... 您可能还需要在模型中添加适当的 attr_accessible 设置,具体取决于您的属性可访问性设置。 在管理中,为每个选项定义选项配置和选项值,然后为您的可
attr_accessible :first_name, :last_name, :nicknames end ``` 创建一个`User`对象并设置`nicknames`字段: ```ruby john = User.create(:first_name => 'John', :last_name => 'Doe', :nicknames => ['Jack', '...
restpack_serializer 模型序列化、分页、旁加载和过滤restpack_serializer 允许您为应用程序快速提供一组 RESTful 端点。 它是新兴的标准的实现。... ActiveRecord :: Base attr_accessible :title ,