`

cookie 原理

阅读更多

关于JSessionID

servlet规范中,HttpServletSession的获取时通过调用request.getSession(boolean createnew)方法来实现,其实现机制可以简单的理解为存在一个大的hashMap结构,key就是jsessionid,而valuleHttpservletSession对象。 request.getSession(boolean createnew)方法通过jsessionid来获取对应的HttpservletSession,如果不存在并且参数createnew= true,则创建一个新的HttpservletSession对象,并设置jsessionid=session.getId() ,保存到hashMap结构中。以后再传递这个jsessionid. 

 

jsessionid的传递可以是以下途径

   1. 放在cookie

        Cookie: JSESSIONID=abcrmF3Gx-5Z-hhkgHfzr
    2. 
以参数形式放在url
        http://10.3.2.35:11280/wmail/welcome.action?jsessionid=abcQNqiT4C01rg-necLBr
    3. 
form表单传递,通常是用隐藏域
        <input type="hidden" name="jsessionid" value="abcQNqiT4C01rg-necLBr"/>
    4. url
重写
        http://10.3.2.35:11280/jid=abcQNqiT4C01rg-necLBr/wmail/welcome.action
           
或者
        http://10.3.2.35:11280/wmail/welcome.action;jsessionid=abcQNqiT4C01rg-necLBr
    
如果当前还没有jsessionid则当然就无法获取,通常用户第一次访问或者登录前就是这种情况.
    
可以通过request.getRequestedSessionId() 方法来获取本次http 请求的jsessonid值。

 

获取到的HttpServletSession对象

如果HttpServletSession对象是已经存在的,则
    1. session.isNew()=false
    2. request.getRequestedSessionId() == jsessionid == session.getId()
    
如果HttpServletSession对象是调用request.getSession(true) (简写的request.getSession()方法等同于request.getSession(true) )时新创建的,则有以下特征:
    1. session.isNew()=true
    2. 
以后传递的jsessionid=session.getId()
        
注意这里,如果request.getRequestedSessionId() 是空值,情况比较简单,以后传递jsessionid=session.getId()就是了。
        
但是如果request.getRequestedSessionId() 不是空值,通过这个值没有获取到已经存在的session对象,而是返回了一个新的session对象,这个时候新的session.getId()和原有的request.getRequestedSessionId() 关系如何呢?下面详细阐述这种情况。

 

比较JsessionIDCookies

http本身是无session的,无法跟踪客户端的信息,换句话说:http协议不管是谁联接自己。 
为了实现session,必须有浏览器支持。浏览器可以用cookie存储session,这是最通用的做法。 
但是,如果我自己写一个完全符合http协议的浏览器,但是不配合服务器的session要求,那么服务器就无法产生session 
好在现在的浏览器都支持session要求,即使关闭了cookie,浏览器也会向服务器传递sessionid,这个id是存储在浏览器的内存空间中的,不保存在硬盘cookie中。 

 

session是在服务器端保存。服务器根据url请求中的session_id来查找对应的session 

以一个bbs为例,网站需要根据每个请求url获取用户的信息,如果以cookie方式,用户信息全部是存放在cookie中的,这样可能会不安全;如果以session方式,用户信息可以存放在服务器端,服务器只要从http请求中得到session_id,就可以得到存放在session中的用户信息了,这样安全性比较高。session在服务器中的表现方式依服务器而定,可能是写到临时文件中,也可能直接放在内存中。 

服务器从http请求中得到session_id的方式有两种:cookieurl重写。如果客户端启用cookie,那么session_id可以保存在cookie中;如果禁用cookie,就用url重写方式,在url中添加.jsessionid=xxxxx参数部分,服务器会试图从url中得到.jsessionid参数作为session_id. 

 

http的报文格式里面cookiesession是在同一个包文位置上的 
如果ie发现包文里面包含cookie/session的信息的话,他会根据安全级别来决定是否保存相关信息,比如,如果安全机制允许使用cookie那么ie将把cookie的信息保存到临时文件里面,每次在请求服务器文件的时候会把收到的session的信息加入到请求的报文里面,这就是session保存信息的原理。如果安全机制不允许使用cookie的话,虽然ie收到了cookiesession的信息,那么cookie的信息不会被写入临时文件,当ie再次请求服务器文件的时候,也不会把收到的session的信息加入到请求报文里面,服务器就无法知道session的信息了。 

我相信:一片叶子也能倾倒整个季节

Cookie工作原理

上一篇 / 下一篇  2007-10-24 17:10:40

 Cookie和会话状态的工作原理及Cookie欺骗  

session是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户,session是以Cookie或URL重写为基础。默认使用Cookie来实现,系统会创造一个名为JSESSIONID的输出Cookie,或称为"Session Cookie",以区别Persistent Cookies(通常所说的Cookie).Session Cookie是存储在浏览器中,并不是写在硬盘上的,但是把浏览器的Cookie禁止后,使用response对象的encodeURL或encodeRedirectURL方法编码URL,WEB服务器会采URL重写的方式传递Sessionid,用户就可以在地址栏看到jsessionid=A09JHGHKHU68624309UTY84932之类的字符串。
 
通常Session Cookie是不能跨窗口使用,当用户新开了一个浏览器进入相同的页面时,系统会赋予用户一个新的SessionID,这样信息共享的目的就达不到,此时可以把SessionID保存在Persistent Cookie中,然后再新的窗口中读出来,就可以得到上一个窗口的SessionID了,这样通过Session Cookie和Persistent Cookie的结合,实现了跨窗口的会话跟踪。

session的工作原理
就session的实现而言,好像是这样的:
(1)当有Session启动时,服务器生成一个唯一值,称为SessionID(好像是通过取进程ID的方式取得的)。
(2)然后,服务器开辟一块内存,对应于该SessionID。
(3)服务器再将该SessionID写入浏览器的cookie(一些在网页的源代码中有所体现)。
(4)服务器内有一进程,监视所有Session的活动状况,如果有Session超时或是主动关闭,服务器就释放该内存块。
(5)当浏览器连入IIS(服务器)时并请求的ASP(脚本语言)内用到Session时,IIS(服务器)就读浏览器Cookie中的SessionID。
(6)然后,服务检查该SessionID所对应的内存是否有效。
(7)如果有效,就读出内存中的值。
(8)如果无效,就建立新的Session。

注意:
(1)在大浏览量的网站,Session并不保险,我们过去的网站就经常碰到存在Session中得值不正确(可能出现重复的Session ID)。
(2)Session ID不能从硬盘上的Cookie文件获得,如果想在客户端获知自己的Session ID,只能通过Javascrīpt来读取。

 

Cookie和会话状态
做BS开发,这两个概念必不可少,先来个大概了解,没有实际应用很难深入,深入看参考地址!
什么是 Cookie?
Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。用户每次访问站点时,Web 应用程序都可以读取 Cookie 包含的信息。 Cookie 的基本工作原理如果用户再次访问站点上的页面,当该用户输入 URLwww.*****.com时,浏览器就会在本地硬盘上查找与该 URL 相关联的 Cookie。如果该 Cookie 存在,浏览器就将它与页面请求一起发送到您的站点。

Cookie 有哪些用途?
最根本的用途是:Cookie 能够帮助 Web 站点保存有关访问者的信息。更概括地说,Cookie 是一种保持Web 应用程序连续性(即执行“状态管理”)的方法.使 Web 站点记住您.

什么是会话Session?
当用户访问您的站点时,服务器会为该用户创建唯一的会话,会话将一直延续到用户访问结束。

 

分享到:
评论

相关推荐

    SYN Cookie原理及在Linux内核中的实现

    SYN Cookie原理与Linux内核实现详解 SYN Flood攻击是一种常见的分布式拒绝服务(DoS)攻击手段,尤其在网络环境基于IPv4的TCP/IP协议栈中。这种攻击利用TCP协议的三次握手流程,通过发送大量伪造源地址的SYN请求,...

    cookie原理解析

    cookie 原理解析 Cookie 是一种机制,用于弥补 HTTP 协议无状态的不足,实现会话跟踪。Cookie 是由 W3C 组织提出,最早由 Netscape 社区发展的一种机制。目前 Cookie 已经成为标准,所有的主流浏览器如 IE、...

    COOKIE注入原理动画教程

    "COOKIE注入原理动画教程" 这个标题明确指出了我们要学习的主题——COOKIE注入的原理,而且是以动画的形式进行教学。这表明我们将通过动态、视觉化的方式了解这个网络安全中的概念。 **描述分析:** 描述简单明了,...

    关于session与cookie的原理简述

    【Session与Cookie原理简述】 Session和Cookie是两种在Web开发中常见的用户状态管理机制,它们主要用于在HTTP协议无状态的特性下跟踪用户状态。理解它们的原理对于编写高效的Web应用至关重要。 **Cookie原理** ...

    JavaScript cookie原理及使用实例

    了解Cookie的工作原理和特性对于Web开发至关重要,尤其是在处理用户认证、保持会话状态等场景下。然而,随着技术的发展,Web Storage(localStorage和sessionStorage)以及IndexedDB等现代存储解决方案提供了更大...

    session实质就是cookie

    ##### 2.3 Cookie原理 1. **创建Cookie**:服务器创建并设置Cookie对象的属性。 2. **发送Cookie**:服务器通过HTTP响应头`Set-Cookie`发送Cookie信息给客户端。 3. **客户端存储**:客户端将接收到的Cookie信息...

    小新cookie在线注入工具加教程

    1. **Cookie原理**:理解cookie的工作机制是学习注入的基础,它是服务器发送到用户浏览器并存储的一小块数据,用于识别用户身份和维持会话状态。 2. **安全风险**:不当的cookie管理可能导致会话劫持、身份冒用等...

    CSDNcookie资料全集

    在这个资料包中,你可能会找到关于Cookie原理、使用方法以及Java实现Cookie功能的相关教程和示例。 【描述】提到的“我把csdn上的cookie的资料都下来看了一遍,整理好了”,意味着这个压缩包可能包含了多篇博客文章...

    使用cookie知道WebClient坚持ASP.NET MVC认证.zip

    1. **Cookie原理**: - Cookie是一种小型文本文件,由服务器发送到用户的浏览器,并由浏览器保存,当用户再次访问同一网站时,浏览器会将Cookie返回给服务器。Cookie用于存储用户状态信息,如登录状态、购物车内容...

    cookie管理工具IECookiesView V1.73

    1. **Cookie原理与作用**:Cookie是网站为了辨别用户身份、保持会话状态而存储在用户本地的数据。例如,登录状态、购物车信息、个性化设置等都可以通过Cookie来实现。 2. **管理Cookie的重要性**:管理Cookie可以...

    sso-user-cookie.zip

    1. **Cookie原理**: - Cookie是Web服务器在用户的浏览器上存储的小型文本文件,用于跟踪和维护用户状态。 - 在SSO场景下,Cookie通常用于存储用户的身份验证信息,如JWT(JSON Web Token)或自定义的认证令牌。 ...

    Web应用安全:XSS盗取cookiepayload.pptx

    **XSS盗取Cookie原理分析** XSS攻击中,攻击者的目标是将恶意脚本插入到受害者的浏览页面中。这个脚本通常设计为在用户浏览器中读取Cookie并将其发送给攻击者。以下为攻击步骤: 1. 攻击者在目标网站上注入恶意XSS...

    cookie-sql-南方数据网站

    1. **Cookie原理**:了解Cookie的工作机制,包括如何设置、读取和管理Cookie,以及它们在会话管理、个性化设置等方面的作用。 2. **SQL注入漏洞**:理解什么是SQL注入,它是如何发生的,以及攻击者可以利用这种漏洞...

    session和cookie交互原理

    介绍下cookie和session之间是咋交互的。原理是啥

    学习笔记(12):21天搞定分布式Python网络爬虫-urllib库-Cookie原理讲解

    本篇学习笔记将深入讲解Cookie的工作原理以及在`urllib`库中的应用。 Cookie是一种小型文本文件,由服务器发送到用户的浏览器,并由浏览器保存。它的主要用途是识别用户身份、维持会话状态,比如当你登录某个网站后...

    Real防盗链防下载插件

    采用Cookie原理,对合法用户页面提供一个多重加密Cookie,点播时对Cookie进行验证实现防盗链、下载的功能。由于Cookie本身的特性,需要Web服务和RealSystem服务处于同一个域下才能接收到Cookie信息,所以推荐Web服务...

    Cookie浏览器

    1. **Cookie的定义与工作原理** - Cookie是由Web服务器发送到用户的浏览器并存储在那里的一小块信息,当用户再次访问同一网站时,浏览器会将这些信息返回给服务器。 - 主要分为Session Cookie和Persistent Cookie...

    SSO-相关核心技术知识

    #### 一、Cookie 原理 在现代Web应用中,单点登录(Single Sign-On,简称SSO)是一种让用户只需进行一次登录就能访问多个应用的技术。为了实现这一功能,Cookie起着至关重要的作用。 **1.1 Cookie与JSESSIONID** ...

Global site tag (gtag.js) - Google Analytics