`
walsece
  • 浏览: 138402 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

使用cookie时经常忽略的一个重要问题

    博客分类:
  • J2EE
阅读更多

注:本文为原创文章,转载时请注明转载地址。

    
cookie经常用来存储客户端小数据量的状态数据,在实际的web开发中经常使用,但是很多人在实际的使用中都会忽略一个cookie重大的缺陷以至该缺陷在程序中引发的bug很难被发现。

     使用cookie的缺陷就是:cookie在每台计算机上总的数量不能超过300个,对于每个服务器(并不是只单独的一个domain)来说最多不能超过20个,每个cookie的大小不能超过4000字节,当然以上的数据只是一个最大值,不同的浏览器可能会更小。

     Cookie的这个缺陷在程序中会引发以下问题:
     Cookie的使用很简单,只要name=value即可,同时每个这种值对就代表一个cookie文件,对于每个服务器来说,如果用来存储cookie的文件超过20个,那么将会导致后面的cookie文件覆盖早期的cookie文件,这除了会导致程序中自定义的状态数据丢失外还会导致session丢失的问题。大家都知道,在大部分的session跟踪中都是通过cookie来实现的,如jsessionid=000000之类的样式,如果滥用cookie使其数目过大将会覆盖掉该session跟踪的信息,那么就会引发session丢失的问题,并且引发的这种问题具有很大的隐蔽性以及不确定性。
     同样如果每个cookie文件的数据过大以至超过4K(可能还会更小)将会自动溢出,同样会导致数据丢失的问题。

     因此在实际开发中尽量将数据压缩,将cookie文件的数量压缩,不要将每个状态数据单独存放在独立的cookie文件中,最好将不同的状态数据通过压缩存放在同一个cookie文件中,举个例子:
     如果在客户端保存用户登录的用户名和密码或者其他信息时,不要用以下方式: id=XXXX,pwd=XXX,最好是存在一个文件中如:user=id-XXX,pwd-XXX

 

6
4
分享到:
评论
2 楼 qq493197363 2008-05-11  
1 楼 qq493197363 2008-05-11  
写的很好啊

相关推荐

    cookie

    每个Cookie都包含一个名字、值、过期时间、路径、域等属性。 2. **Cookie的生命周期**:默认情况下,Cookie在浏览器关闭后就会消失(会话Cookie)。若设置了过期时间,Cookie将在指定的时间后失效。 3. **Cookie的...

    cookie之困

    每个Cookie都由一个三元组`[name, domain, path]`组成,这三个元素共同决定了一个Cookie的唯一性。即使其他属性相同,只要这三项中有任何一项不同,就认为是不同的Cookie。 ##### 4. 同源策略(SOP) 同源策略是...

    flask、session、cookie解加密脚本

    在IT行业中,安全是至关重要的一个领域,尤其是在Web开发中。`Flask`是一个轻量级的Python Web框架,它提供了构建Web应用的基础结构。在处理用户登录和会话管理时,`session`和`cookie`是两个核心概念。本文将深入...

    iOS Cookie AFNetWorking3.0

    在iOS开发中,AFNetworking是一个广泛使用的网络请求库,它极大地简化了HTTP请求处理。而“iOS Cookie AFNetWorking3.0”项目是基于AFNetworking 3.0版本进行的扩展,特别关注了Cookie的管理和使用。这个项目可能是...

    PHP程序设计-3期(KC016) 3.11.1服务端写cookie常见问题.docx

    这个参数是一个Unix时间戳,表示Cookie何时过期。如果不设置或者设置为零,那么Cookie将在浏览器关闭时失效。初学者可能困惑于如何正确计算或传递这个时间戳。以下是一个示例: ```php $expiration = time() + ...

    检查cookie范围.docx

    默认情况下,当一个应用程序(如foo.test.com)设置一个Cookie时,这个Cookie将仅适用于该特定的域及其子域(例如admin.foo.test.com)。但不会被提交给其他任何域,包括父域(test.com)或其他子域(如bar.test.com...

    关于jsp中cookie丢失问题(详解)

    为避免这种情况,应确保为Cookie设置一个适当的路径,如示例代码所示,将Path设置为"/",这样整个网站都能识别这个Cookie。 ```java Cookie cookie = new Cookie(cookieName, value); cookie.setMaxAge(3600); /...

    scrapy中如何设置应用cookies的方法(3种)

    在Scrapy中,使用和管理Cookies是一个非常常见的需求。Cookies是用来识别用户状态的一种机制,在网络请求中起到了非常重要的作用。在爬虫中设置cookies可以模拟正常用户的浏览行为,有些网站会根据用户的cookies来...

    Python3获取cookie常用三种方案

    在Python3中,获取网页cookie有多种方法,每种方法都有其特定...在进行网络编程时,正确处理cookie对于模拟用户会话、实现自动登录等功能至关重要。同时,确保遵循网站的使用协议,避免违反反爬虫策略,尊重数据隐私。

    libhttp-cookies-perl_6.00.orig.tar_libhttp_

    libhttp-cookies-perl是Perl环境中用于处理HTTP Cookie的一个重要模块,它为开发者提供了便利的接口,以实现对Cookie的创建、读取和管理。本文将深入探讨libhttp-cookies-perl库的功能、用法以及在实际应用中的价值...

    cookie在javascript中的使用技巧以及隐私在服务器端的设置

    这个属性返回的是一个字符串,包含了当前域名下所有的Cookie,各个Cookie之间由分号和空格分隔。例如,`document.cookie`的值可能是`"key1=value1; key2=value2"`。如果Cookie数量过多或单个Cookie超过4KB限制,...

    Python3 使用cookiejar管理cookie的方法

    以下是一个使用`cookiejar`的简单示例,展示了如何实现登录并访问登录后页面的过程: 1. **创建Cookie Jar**: 首先,我们需要创建一个`CookieJar`实例,这将是我们的Cookie容器: ```python from ...

    servlet之cookied深入浅出

    2. `response.addCookie(Cookie cookie)`:添加一个Cookie到响应中。服务器可以通过这个方法设置新的Cookie或更新已存在的Cookie。 在实际应用中,我们通常会创建一个`Cookie`对象,设置其名称、值、路径、域、过期...

    python爬虫中get和post方法介绍以及cookie作用

    在爬虫中,Cookie常常用于维持用户登录状态,比如在登录163邮箱后,服务器会返回一个Cookie,爬虫在后续访问其他页面时需要带上这个Cookie,以表明已经登录的身份。如果缺失Cookie,服务器可能会要求重新登录。 ...

    http远程接口调用-httpClient+跳过SSL证书校验

    // 创建一个忽略SSL校验的SSLConnectionSocketFactory SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext, hostnameVerifier); // 使用自定义的...

    PHP程序设计-3期(KC016) 3.12.2存储session变量常见问题.docx

    实际上,`$_SESSION`不是一个简单的变量,而是一个特殊的数据结构,用于存储键值对。正确的做法是将键值对存储到`$_SESSION`数组中: ```php // 正确的示例 $_SESSION['username'] = 'John Doe'; ``` 这样做后,`...

    Cookie 注入是怎样产生的

    这个问题通常发生在开发人员为了简化代码而直接使用类似`Request("ID")`的方式来获取请求中的参数时,而忽视了对Cookie数据的检查。 首先,我们需要了解Web服务器处理用户请求的基本流程。当用户通过浏览器访问一个...

    ASP+SQL教材大全

    例如,如果一个用户在一个很长的HTML表单中忽略了回答一个问题,他或她应该不能到下一个页面。这个表单应该重新刷新而先前已做的回答应原封未动。在这章里,你将学习到如何在HTML表格里自动重显这些字段。 ■不通过...

    Python Cookie 读取和保存方法

    这段代码首先创建了一个`CookieJar`对象`cookie`,然后构建了一个`HTTPCookieProcessor`处理器`handler`,并将其与`build_opener`结合,用于处理HTTP请求。当调用`open`方法打开URL时,`HTTPCookieProcessor`会自动...

    一个注解解决页面重复提交

    当我们处理表单提交时,可以将一个标记(如已处理状态)存入Session,后续的重复请求检查该标记,若已处理则忽略。 2. **自定义拦截器**:创建一个实现了Spring的HandlerInterceptor接口的拦截器类,重写`preHandle...

Global site tag (gtag.js) - Google Analytics