`
Eric.Yan
  • 浏览: 321417 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

再解cookie机制

    博客分类:
  • JSP
阅读更多

在JSP9中内置对象中已有对cookie的解释,在此在对其进行详解:

 

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。
  
  本章的所有源代码均包含在项目Session中。
  
  5.1 Cookie机制
  在程序中,会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混淆。例如,用户 A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话的,不能放入用户B或用户C的购物车内,这不属于同一个会话。
  
  而Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪该会话,必须引入一种机制。
  
  Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话。
  
  5.1.1 什么是Cookie
  Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie。
  
  由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。
  
  Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
  
  查看某个网站颁发的Cookie很简单。在浏览器地址栏输入javascript:alert (document. cookie)就可以了。JavaScript脚本会弹出一个对话框显示本网站颁发的所有Cookie的内容,如图5.1所示。
  


  
  
  图5.1 Baidu网站颁发的Cookie
  
  图5.1中弹出的对话框中显示的为Baidu网站的Cookie。其中第一行BAIDUID记录的就是笔者的身份helloweenvsfei,只是Baidu使用特殊的方法将Cookie信息加密了。
  
  
  %注意:Cookie功能需要浏览器的支持。如果浏览器不支持Cookie(如大部分手机中的浏览器)或者把Cookie禁用了,Cookie功能就会失效。不同的浏览器采用不同的方式保存Cookie。IE浏览器会在“C:\Documents and Settings\你的用户名\Cookies”文件夹下以文本文件形式保存,一个文本文件保存一个Cookie。
  
  5.1.2 记录用户访问次数
  Java中把 Cookie封装成了javax.servlet.http.Cookie类。每个Cookie都是该Cookie类的对象。服务器通过操作Cookie 类对象对客户端Cookie进行操作。通过request.getCookie()获取客户端提交的所有Cookie(以Cookie[]数组形式返回),通过response.addCookie(Cookie cookie)向客户端设置Cookie。
  
  Cookie对象使用key-value属性对的形式保存用户状态,一个Cookie对象保存一个属性对,一个request或者response同时使用多个Cookie。因为Cookie类位于包javax.servlet.http.*下面,所以JSP中不需要import该类。
  
  看一个使用Cookie记录用户账号以及登录次数的例子。在MyEclipse中新建Web Project,选择Java EE 5.0规范,填写项目名称为sessionWeb。新建JSP页面cookie.jsp,输入源代码如下:
  
  代码5.1 cookie.jsp
  <%@ page language="java" pageEncoding="UTF-8" errorPage="login.jsp" %>
  
  <%
  
   request.setCharacterEncoding("UTF-8"); //
设置request编码,此处需注意,很多情况会得到乱码,就是因为没有设置编码
  
   String username = ""; // 用户名
  
   int visitTimes = 0; // 访问次数
  
   
  
   Cookie[] cookies = request.getCookies(); // 所有的Cookie 
  
   for(int i=0; cookies!=null&&i   // 遍历Cookie寻找账号与登录次数
  
   Cookie cookie = cookies[i]; // 第i个Cookie
  
   if(username.equals(cookie.getName())){// 如果Cookie名为username
  
   
visitTimes = Integer.parseInt(cookie.getValue()); // 则记录该Cookie的内容
  
   }
  
   }
  
   if(username == null || username.trim().equals("")){
   // 如果没有找到用户名,则转到登录界面
  
   throw new Exception("您还没有登录。请先登录");
  
   }
  
   // 修改 Cookie,更新用户的访问次数
  
   Cookie visitTimesCookie = new Cookie(
username,Integer.toString 
   (++visitTimes));
  
   response.addCookie(visitTimesCookie); // 覆盖名为
username

的Cookie
  
  %>
  <body>  

http://blog.tianya.cn/blogger/post_show.asp?BlogID=2153833&PostID=22002709

原文链接:

 

分享到:
评论

相关推荐

    Cookie将用户名和密码加密后存在客户端的Cookie当中

    这种机制可以用来追踪用户的活动状态或偏好设置等信息。 #### 三、具体实现 在本案例中,当用户成功登录系统后,其用户名和密码会被加密,并存储在两个不同的Cookie(`UserCookie`和`PwdCookie`)中。这样做有以下...

    阿里系cookie加密(acw-sc-v2)算法 ZIP包案例为雪球Cookie加密

    阿里系的cookie加密技术,尤其是ACW-SC-V2版本,是阿里巴巴集团为了保障用户数据安全而设计的一种加密机制。这种加密方式广泛应用于其旗下的各个产品和服务中,例如在本案例中的雪球平台。雪球是一款财经资讯和社交...

    cookie产生与认证

    Cookie是Web应用中广泛使用的一种身份验证机制,它在用户与服务器之间传递状态信息。Cookie的概念源于HTTP协议,因为HTTP本身是无状态的,也就是说,服务器不会记住客户端的状态。为了解决这个问题,Web开发者引入了...

    C#提取Chrome浏览器Cookie值源码

    解密过程通常涉及到对Chrome的内部数据结构和加密机制的理解。 在提供的压缩包文件中,有两个关键文件: 1. `ChromeCookieReader.cs`: 这是主要的源代码文件,实现了读取和解密Cookie的逻辑。它可能包含了对Chrome...

    Cookie、Session和Token三者的区别及使用

    ### Cookie、Session与Token的区别及使用详解 #### 一、Cookie **定义**: Cookie是一种用于在客户端保持状态的方案。简单来说,当你访问一个网站时,该网站可能会在你的计算机上留下一些信息(如用户名、密码等),...

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

    当达到最大连接数时,新的SYN请求会替换旧的请求,但SYN Cookie机制确保了合法连接不会因资源耗尽而丢失。 Linux内核的SYN Cookie功能并非始终启用,通常在系统遭受SYN Flood攻击且标准防御机制不足以抵御攻击时...

    取网页Cookie.rar

    网页Cookie是互联网技术中一种重要的数据存储机制,用于在客户端(浏览器)和服务器之间传递状态信息。本资料“取网页Cookie.rar”似乎包含了一个关于如何获取网页Cookie的教程或工具。下面将详细介绍网页Cookie的...

    Set-Cookie: JSESSIONID=8AB51DC4244907FD9EBB063C7FD73CBA; Path=/; HttpOnly

    Cookie 是 HTTP 协议中的一种机制,用于在客户端保存服务器端的信息,以便服务器端可以追踪用户的行为。然而,在某些情况下,Cookie 中的路径属性可能会泄露项目路径,导致安全风险。本文将介绍如何解决 Cookie ...

    Get Cookie-crx 插件 2.0版本

    对于开发者而言,Get Cookie插件可以帮助他们调试Web应用,检查登录状态或者验证用户认证机制。对于网站管理员,它可以用来监控和分析网站的用户行为。而对于普通用户,插件则可以作为一种辅助工具,例如在需要备份...

    SSO单点登录【基于cookie二级域名下跨域共享】

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次进行身份验证。在基于Cookie的二级域名下跨域共享SSO实现中,核心概念是利用Cookie的特性来实现用户...

    Cookie610.zip

    因此,很多网站现在都有Cookie政策和选择加入的机制。 5. **用途**: - 身份验证:保持用户登录状态,无需每次都输入用户名和密码。 - 个性化:记录用户喜好,如网页布局、语言设置等。 - 分析:跟踪用户行为,...

    基于可变Cookie的跨域单点登录

    传统的单点登录解决方案大多依赖于固定的认证机制,如使用静态密钥进行Cookie加密,这种方式容易受到安全威胁,例如中间人攻击或重放攻击。基于可变Cookie的跨域单点登录方案通过以下几个关键步骤来克服这些问题: ...

    sso-user-cookie.zip

    SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户通过一次登录,即可访问多个相互关联的应用系统,无需多次输入凭证。在本“sso-user-cookie.zip”压缩包中,提供的是一个基于Cookie实现的SSO单点登录的...

    js 逆向学习笔记之加速乐cookie加密.docx

    本文将详细介绍如何通过JavaScript逆向技术来分析并破解加速乐网站的Cookie加密机制。 #### 二、Cookie加密原理 Cookie是网站用来存储用户信息的一种常用手段。在加速乐的例子中,网站通过三次请求来实现Cookie的...

    阿里系cookie加密(acw-sc-v2)算法

    在雪球网站中,这种加密机制被应用到了用户的Cookie上,确保了用户会话数据的隐私和完整性。`acw-sc-v2`是阿里系用于cookie加密的一种特定版本,它涉及到JavaScript和Python两种编程语言的实现。 首先,JavaScript...

    day16_cookie&session.rar

    Session则是服务器端用来存储用户会话信息的一种机制。与Cookie不同,Session数据存储在服务器上,不直接暴露给用户,这使得Session在安全性方面比Cookie更有优势。当用户首次访问网站时,服务器会为该用户创建一个...

    JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍

    Cookie是Web开发中的一种数据存储机制,它允许服务器向客户端发送少量数据,并在客户端(浏览器)中存储,以便在后续请求中使用。以下将详细介绍如何使用JavaScript操作cookie以及相关函数。 首先,我们来看如何...

    php破解验证码配套代码

    验证码(CAPTCHA)是一种用于防止机器自动操作的安全机制,它通过让用户输入图片中显示的字符来验证用户是否是人类。在本案例中,我们讨论的是如何利用PHP进行验证码的破解,以及相关的编程技巧。 首先,我们要理解...

    js 逆向学习笔记之阿里系cookie.docx

    在实际工作中,逆向JavaScript代码可以用于多种场景,例如:绕过网站的安全机制、提取API接口等。 #### 二、阿里系Cookie解密背景介绍 阿里系网站作为国内最大的电商平台之一,为了保护用户数据安全及防止恶意爬虫...

    cookiepolicy:用于实现欧盟隐含 cookie 浓度消息框的 jQuery 插件

    此插件并非旨在控制包含 3rd 方 JavaScript - 它只是提供一种机制来关闭 cookie 策略消息。 安装 要安装 CookiePolicy jQuery 插件,只需下载并解压缩到公共位置。 然后,像这样包含 JavaScript 和 CSS 文件: &...

Global site tag (gtag.js) - Google Analytics