WEB安全(六)Session的使用、Session与Cookie的区别

Session是会话,是用在服务端记录用户信息的数据结构。

Session的使用

1、获取Session对象
	HttpSession s = request.getSession(boolean flag);

注:HttpSession是一个接口。

当flag为true时,根据请求中的SessionId查找对应Session对象,不存在则返回新建Session对象。

当flag为false时,同样根据请求中的SessionId查找对应Session对象,不存在则返回null。

2、常用方法

绑定数据:

    session.setAttribute(String name,Object obj);

根据绑定名获得绑定值:

    Object session.getAttribute(String name);

解除绑定:

    session.removeAttribute(String name);
3、Session的自动销毁
  • Tomcat 服务器默认的Session超时时间是30分钟

  • 可以利用web.xml设置超时时间单位是分钟,设置为0表示不销毁。

<session-config> <session-timeout>20</session-timeout> </session-config>

Session 与 Cookie 的区别

解决HTTP协议自身无状态的方式有cookie和session。二者都能记录状态,前者是将状态数据保存在客户端,后者则保存在服务端。

Session的工作原理

session的基本原理是服务端为每一个session维护一份会话信息数据,而客户端和服务端依靠一个全局唯一的标识来访问会话信息数据。用户访问web应用时,服务端程序决定何时创建session,创建session可以概括为三个步骤:

1、生成全局唯一标识符(sessionid);

2、开辟数据存储空间。一般会在内存中创建相应的数据结构,但这种情况下,系统一旦掉电,所有的会话数据就会丢失,如果是电子商务网站,这种事故会造成严重的后果。不过也可以写到文件里甚至存储在数据库中,这样虽然会增加I/O开销,但session可以实现某种程度的持久化,而且更有利于session的共享;

3、将session的全局唯一标示符发送给客户端。

Cookie的工作原理

无论使用何种服务端技术,只要发送回的HTTP响应中包含如下形式的头,则视为服务器要求设置一个cookie:

Set-cookie:name=name;expires=date;path=path;domain=domain

支持cookie的浏览器都会对此作出反应,即创建cookie文件并保存(也可能是内存cookie),用户以后在每次发出请求时,浏览器都要判断当前所有的cookie中有没有没失效(根据expires属性判断)并且匹配了path属性的cookie信息,如果有的话,会以下面的形式加入到请求头中发回服务端:

Cookie: name=“zj”; Path="/linkage"

服务端的动态脚本会对其进行分析,并做出相应的处理,当然也可以选择直接忽略。

需要注意的是,出于安全性的考虑,cookie可以被浏览器禁用。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值