12月13日 什么是help_method,session的简单理解, find_by等finder method

helper_method

    Declare a controller method as a helper. For example,

helper_method :link_to

def link_to(name, options) … end

makes the link_to controller method available in the view.

课程遇到的如current_cart,current_user. 声明后,就可以在view里面使用这个method了。

 


finder method

find_by: 属于ActiveRecord提供的finder methods 之一。通过传递argument来在database中查找。

       The find_by method finds the first record matching some conditions.

find_by!: 和find_by一样,但nill的话,会报错!ActiveRecord::RecordNoFound 

find_by_id: find_by_id(params[:id]) ,估计这个用法不再使用了。

 

 

http://guides.rubyonrails.org/active_record_querying.html   有22以上中finder methods可用。

 

(Finder methods that return a collection,such as where and group, return an instance of ActiveRecord::Relation. Methods that find a single entity实体,such as find and first, return a single instance of the model) 


 

session[]:http://guides.rubyonrails.org/action_controller_overview.html 

详细解释:有整整一章http://guides.rubyonrails.org/security.html 

简单说:翻译“一段会话”我的理解就是用于储存的一小块数据,在controller和view中使用,默认是储存在cache缓存中,因此不要储存关键的数据,复杂的数据。 

  

 关键翻译:Session are lazily loaded. If youdon't access sessions in your action's code,they will not be loaded.Hence you will never to disable sessions, just not accessing them will do the job.

session是惰性的,如果在action中不使用它,它不会自动加载,所以无需禁用它。 

 

Session Guidlines

1.Do not store large objects in a session.Instead store them in the database and save their id in the session.

2.critical data should not be stored in session. 

 

Session Storage 

Rails provides several storage mechanisms(运行机制) for the session hashes. The most important is ActionDispatch::Session::CookieStore 

(行为快速处理::一段会话::cookie存储) 

retiever(a dog that to find and bring back sth for its master) ;retieve( to find sth and bring it back)

什么是cookiestore:在client-side储存session hash,sever-side可以通过session-id来快速的调用数据,这样有不安全的可能。client可以看到session的内容,Rails4开始使用加密算法 cookie(secrets.secret_key_base)

 

Replay Attacks for cookiestore sessions :(一种攻击方法。)

解决办法:使用a nonce(a random value)放置在session中,每个nonce只能用一次 。最好的办法还是不要存敏感信心如credit在session中,只在session中保留登陆user_id。

 

Session Fixation:(一种攻击方法。)

我的理解:攻击者从server端获得一个合法的session并保持长期活跃,然后通过感染页面的方式让用户使用attacker的这个陷阱session,用户始终不知道自己的session被篡改了。

Countermeasure: (应对措施) reset_session使用的Devise gem就有这个代码功能.

每次登陆登出都会自动分配新的session给用户。 

 

Session Expiry:(session到期结束,一个安全方法。)

通过在服务器端设定session的 到期time_stamp 时间。

1.登陆多久后重置session. 但如果attacker在允许的登陆时间内反复登陆可以避开这个办法,所以需要用到下面的2.

2.设置这个session的最长寿命如2天。

delete_all "updated_at < '#{time.ago.to_s(:db)}' OR
  created_at < '#{2.days.ago.to_s(:db)}'"

 

 

 

 

转载于:https://www.cnblogs.com/chentianwei/p/8031913.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Openshift源中的高可用性Drools无状态服务

嗨&#xff0c;大家好&#xff01; 在这篇博客文章中&#xff0c;我想举一个简单的例子&#xff0c;展示使用Openshift 3&#xff08;Docker和Kubernetes&#xff09;扩展Drools Stateless服务有多么容易。 我将展示如何通过按需提供新实例来扩展我们的服务&#xff0c;以及如何…

FTP配置文件详解vsftpd.conf

FTP配置文件详解vsftpd.conf 转载过来做个笔记&#xff0c;原文地址&#xff1a;https://blog.csdn.net/miss520jenny/article/details/92664533 #vi /etc/vsftpd/vsftpd.conf 1&#xff0e;登录和对匿名用户的设置 write_enableYES //是否对登录用户开启写权限。属全局性设…

Visual C++中MFC消息的分类

Visual C中MFC消息的分为三类&#xff1a;标准(窗口)消息、命令消息、控件消息。 1、标准(窗口)消息&#xff1a;窗口消息一般与窗口内部运作有关&#xff0c;如创建窗口&#xff0c;绘制窗口&#xff0c;销毁窗口&#xff0c;通常&#xff0c;消息是从系统发到窗口&#xff0c…

为什么配置了vsftpd.conf文件,用户还是可以访问上级目录?

因为选择的连接类型是 SFTP over SSH 所以访问的是 sftp服务器&#xff0c;sftp的配置文件中没对该用户限制根目录&#xff0c;所以可以访问上一级目录。但是&#xff0c;还是不可以写入了&#xff0c;除了该用户的目录文件&#xff0c;其他文件都是只读。 修改 /etc/ssh/sshd…

来呀,快活呀。iOS 超级码农群:538549344

特大喜讯&#xff1a; iOS开发的小伙伴们&#xff0c;咱们有群了 iOS 超级码农交流群&#xff1a; 538549344 建群源于最近好多人加我QQ交流技术问题&#xff0c;有时忙于工作无法及时回复&#xff0c;为了大家的问题能及时得到解答&#xff0c;还是建个群&#xff0c;群里很多…

jpa jsf_完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第1部分

jpa jsf我们创建了这篇文章&#xff0c;将展示如何使用以下工具创建完整的Web应用程序&#xff1a;Tomcat7&#xff0c;带有Primefaces的JSF2&#xff08;Facelets和Libraries&#xff09;&#xff08;具有AutoComplete&#xff09;&#xff0c;JPA / Hibernate&#xff08;具有…

前端性能优化:Add Expires headers

合理设置 HTTP缓存 缓存的力量是强大的&#xff0c;恰当的缓存设置可以大大的减少 HTTP请求。 很少变化的图片资源可以直接通过 HTTP Header中的Expires设置一个很长的过期头 ;变化不频繁而又可能会变的资源可以使用 Last-Modifed来做请求验证。 &#xff08;1&#xff09;Apa…

错题

1. 本题考查String对象的声明和赋值方式。C#中没有new String() 这种方式来构造字符串。故选 AC 2. 在CSS中&#xff0c;控制列表样式的属性有&#xff1a;list-style-type&#xff0c;list-style-position&#xff0c;list-style-image&#xff0c;list-style equals比较的是像…

通过微调JVM Garbage Collector减少Java IDE滞后

有没有想过为什么Eclipse / Netbeans会一直暂停一段时间&#xff1f; 特别是在您想向亲爱的同事展示代码中的内容时&#xff1f; 感觉很尴尬和尴尬&#xff0c;不是吗&#xff1f; 我发现大多数时间由于垃圾收集器的执行而导致IDE暂停。 JVM设计中的微妙元素很少起作用&#x…

centos8部署nginx

Nginx 部署 1.创建 www用户&#xff0c; UID、GID 皆是 501&#xff0c;通过cat /etc/passwd&#xff0c;检查是否存在www用户 ~]# groupadd -g 501 www ~]# useradd -u 501 -g www www ~]# cat /etc/passwd 2.下载相应版本 ~]# wget http://nginx.org/download/nginx-1.16…

javascript-发布订阅模式

说明&#xff1a;本篇文章转载自小火柴的蓝色理想的一篇博文。原文地址&#xff1a;http://www.cnblogs.com/xiaohuochai/p/8031564.html 发布—订阅模式又叫观察者模式&#xff0c;它定义对象间的一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖…

centos8部署Django项目---后台运行

参考&#xff1a;https://www.cnblogs.com/yoyoketang/p/10220941.html 一、安装 pip install django创建项目 django-admin startproject mysite打开项目配置settings.py文件 cd mysite/mysitesettings.py文件&#xff08; DEBUG TrueALLOWED_HOSTS [127.0.0.1, localh…

python-列表list和元组tuple

list Python内置的一种数据类型是列表&#xff1a;list。list是一种有序的集合&#xff0c;可以随时添加和删除其中的元素。 比如&#xff0c;列出班里所有同学的名字&#xff0c;就可以用一个list表示&#xff1a; >>> classmates [Michael, Bob, Tracy] >>&g…

jsf表单验证_动态表单,JSF世界期待已久

jsf表单验证新的PrimeFaces扩展版本0.5.0带来了新的DynaForm组件。 通常&#xff0c;如果知道行/列的数量&#xff0c;元素的位置等&#xff0c;则可以通过h&#xff1a;panelGrid或p&#xff1a;panelGrid构建非常简单的表单。 静态表单是正确的。 但是&#xff0c;如果在运行…

转载黑客是如何黑到你手机的?绝对涨姿势,一位黑客的Wi-Fi入侵实录!

声明&#xff1a;这是一虚构的故事&#xff0c;因此对图片均进行了模糊化处理。内容整理自网络&#xff01; 故事的主人公小黑是一名从事IT相关工作的技术宅男。五一长假来临&#xff0c;宅在家中的他相当无聊&#xff0c;打开手机上的Wi-Fi模块&#xff0c;发现附近有将近10个…

linux安装pip

使用脚本安装和升级pip 要安装或升级pip&#xff0c;需要下载 get-pip.py. 地址&#xff1a;https://bootstrap.pypa.io/get-pip.py 然后运行以下命令 (需要管理员权限): $ wget https://bootstrap.pypa.io/get-pip.py $ python get-pip.py #查看pip版本 $ pip -V

我们如何意外地将Hibernate的JDBC流量增加了一倍

这篇文章描述了我最近使用Hibernate ORM的经验。 多年以来&#xff0c;该框架并没有让我感到惊讶&#xff0c;您可能会在使用它时遇到性能问题。 我以为我已经看完了&#xff0c;但是这次我又措手不及了。 该问题的基础是在对一个完全不相关的库进行故障排除时建立的&#xff…

html5——DOM扩展

元素获取 1、document.getElementsByClassName (class) 通过类名获取元素&#xff0c;以类数组形式存在。 2、document.querySelector(‘div’) 通过CSS选择器获取元素&#xff0c;符合匹配条件的第1个元素。 3、document.querySelectorAll(selector) 通过CSS选择器获取元素&am…

linux 系统安装mongodb数据库---方法1

参考&#xff1a;https://www.jianshu.com/p/994bc7b19b26 参考&#xff1a;https://blog.csdn.net/duan9015/article/details/106447942/ 1、制作 repo 文件 vim /etc/yum.repos.d/mongodb-org-4.2.repo[mongodb-org-4.2] nameMongoDB Repository baseurlhttps://repo.mongo…

JAVA递归实现全排列

全排列&#xff08;permutation&#xff09; 排列组合概念 排列&#xff0c;就是指从给定n个数的元素中取出指定m个数的元素&#xff0c;进行排序 组合&#xff0c;则是指从给定n个数的元素中仅仅取出指定m个数的元素&#xff0c;不考虑排序 全排列 以数字为例&#xff0c;全排…