Session管理及Cookie应用原理

一、基于表单认证的标准规范尚未有定论,一般会用Cookie来管理Session(会话)。

基于表单认证本身是通过服务器端的WEB应用,将客户端发送过来的用户名ID和密码与之前登陆过的信息做匹配来认证的。

但是,鉴于HTTP是无状态协议,之前已认证的用户状态无法通过协议层面保存下来。即无法实现状态管理,因此即使当改用户下一次继续访问,也无法区分他与其它的用户。于是,我们会使用Cookie来管理Session,以弥补HTTP协议中不存在的状态管理功能。



二、下图,展示了Session的管理及Cookie的状态管理



三、将上图按照步骤分析:

步骤1:客户端把用户ID和密码等登录信息放入报文的实体部分,通常是以POST方法把请求发送给服务器。而这时,会  使用HTTPS通信来进行HTML表单页面的显示和用户输入数据的发送。

步骤2:服 务器会发送以以识别用户的SessionID。通过验证从客户端发送过来的登陆信息进行身份认证,然后把用户的认证状态与SessionID绑定后记录在 服务器。向客户端返回响应时,会在首部字段Set-Cookie内写入Session ID (如:PHPSESSID=028a8c....)。

我 们可以把SessionID想象成一种用以区分不同用户的等位号。然而,如果你的SessionID被第三方盗走,对方就可以伪装成你的身份进行恶意操作 了。因此必须防止SessionID被盗或被猜出。为此,SessionID应该使用难以推测的字符串,且服务器也需要进行有效期的管理,保证其安全性。 另外,为减轻跨站脚本攻击(XSS)造成的损失,建议事先在Cookie内添加Httponly属性。

步骤3:客户端接收到从服务端发送来的SessionID后,会将其作为Cookie保存在本地。下次服务器发送请求时,浏览器会自动发送Cookie,所以SessionID也会随之发送到服务器。服务器端可通过验证接收到的SessionID识别用户和认证状态。

时间: 2024-12-17 10:48:55

Session管理及Cookie应用原理的相关文章

状态管理之cookie使用及其限制、session会话

# 1.什么是状态管理? 将浏览器与web服务器之间多次交互当作一个整体来处理,并且将多次交互所涉及的数据(即状态)保存下来.(cookie浏览器所涉及到的访问数据保存下来)# 2.如何进行状态管理? 方式一 将状态保存在浏览器端(Cookie). 方式二 将状态保存在服务器端(Session). # 3.Cookie## (1)什么是Cookie? 服务器临时存放在浏览器端的少量数据. ## (2)工作原理 当浏览器访问服务器时,服务器将少量数据以set-cookie消息头的形式发送给浏览器,

会话管理之Cookie技术

会话管理是web开发中比较重要的环节,这一节主要总结下会话管理中的cookie技术. 1. 何为会话 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称为一个会话. 1.1 会话过程中要解决的问题 1)每个用户在使用浏览器与服务器进行会话的过程中,不可避免会各自产生一些数据,程序要想办法为每个用户保存这些数据.        2)如:用户点击超链接通过一个servlet购买了一个商品,程序应该想办法保存用户购买的商品,以便于用于点结账serv

Shiro企业级实战详解,统一的Session管理。

基础的什么配置这些都不说了,百度一下什么都有,直接上干货. Shiro切入点是从web.xml文件,通过filter进行拦截. 直接看DelegatingFilterProxy这个类,很简单,父类就是一个filter,肯定会初始化filter,后面会调用这个方法: @Override protected void initFilterBean() throws ServletException { synchronized (this.delegateMonitor) { if (this.de

转:通过Spring Session实现新一代的Session管理

长期以来,session管理就是企业级Java中的一部分,以致于我们潜意识就认为它是已经解决的问题,在最近的记忆中,我们没有看到这个领域有很大的革新. 但是,现代的趋势是微服务以及可水平扩展的原生云应用(cloud native application),它们会挑战过去20多年来我们设计和构建session管理器时的前提假设,并且暴露了现代化session管理器的不足. 本文将会阐述最近发布的Spring Session API如何帮助我们克服眼下session管理方式中的一些不足,在企业级Ja

JSP Session管理

阅读目录 先说说cookie与session session常用的方法 session声明周期 管理session过期 通过tomcat监控管理session 在Eclipse重启Tomcat,tomcat-users.xml被重置 本篇讲述JSP中session的相关知识和管理方法: 回到顶部 先说说cookie与session 在web中常用的两种用户信息管理方式:cookie 和 session. cookie是保存在用户客户端的数据,用于避免每次发送http请求时,连带过多的数据,造成复

How Tomcat works — 八、tomcat中的session管理

在使用shiro的session的时候感觉对于tomcat中session的管理还不是特别清楚,而且session管理作为tomcat中比较重要的一部分还是很有必要学习的. 目录 概述 session的作用 session新建.查找和更新 session删除 总结 概述 在tomcatsession管理的类标准实现为StandardManager,主要作用为启动的是加载缓存的session,类关系如下: 在用户servlet中使用的session为StandardSessionFacade(也是

Session管理之ThreadLocal

在各种Session 管理方案中, ThreadLocal 模式得到了大量使用.ThreadLocal 是 Java中一种较为特殊的线程绑定机制.通过ThreadLocal存取的数据,总是与当前线程相关. 也就是说,JVM 为每一个执行的线程,绑定了私有的本地实例存取空间,从而为多线程环境常出 现的并发訪问问题提供了一种隔离机制. 首先,我们须要知道.SessionFactory负责创建Session,SessionFactory是线程 安全的,多个并发线程能够同一时候訪问一个SessionFa

【摘自大型网站技术架构书】应用服务器集群的session管理

由于负载均衡服务器可能会将请求分发到集群任何一台服务器上,所以保证每次请求能够获得正确的session比单机时复杂. 集群环境下,session管理的主要几种手段 1.session复制 session复制是早期的企业级的使用比较多的一种服务器集群session管理机制.应用服务器开启web容器的session复制功能,在集群中的几台服务器之间同步session对象,使得每台服务器上都保存所有的session信息,这样任何一台宕机都不会导致session的数据丢失,服务器使用session时,直

Apache/Nginx+Tomcat+Memcahced实现session管理

一.memcached简介 Memcached是一个免费开源.高性能.分布式的内存对象缓存系统.Memcached是在内存中,为特定数据(字符串或对象)构建key-value的小块数据存储. Memcached项目地址: http://www.memcached.org/ 现在最新版本为1.4.22,时间点:2015.01.26 二.实验环境介绍 第一个实验:我们在node3节点实现一个LNMP架构,测试memcached的基本的使用和web gui界面管理: 第二个实验:我们将node3节点当