`
GuMuTian
  • 浏览: 14439 次
社区版块
存档分类
最新评论

[转]操作Cookie的另一个陷阱

    博客分类:
  • Java
阅读更多

  前些天,操作cookie时,遇到了点儿小问题,某个功能需要自动退出用户登陆状态,此时,清除 cookie的代码失效了,而用于提供用户手动退出功能的同一段代码,确工作正常。奇哉怪哉!
  ok,firefox,出列!让我们并肩作战,披荆斩棘,勇往直前,一往无前……
  地球人都知道,servlet的response对象只有addCookie方法,清除cookie是通过设定过期时间来完成的。不过,却很少有人知道,或者说,即便知道,也很少关心,cookie的path。
  通常,对于没有设定path的cookie,其默认值为设置该cookie的URL的path,例如,由http://www.fei2000.cn /java/sample.jsp页所设定的cookie,其path为/java/,该cookie对java及其子目录下的jsp页面均可见,对于其他目录下的页面则不可见。显然,由/java/sample.jsp和/sample/sample.jsp所设定的同名cookie,并不是同一个 cookie,他们互相不可见,互不干扰。
  由此,引出了此次事故的元凶,cookie并不是由name唯一确定的,而默认的path,随着操作cookie的页面URL不同而不同。由于子页面可以获取父页面设定的cookie,很容易造成一个错觉,这2个cookie是同一个!可惜,事与愿违。
子页面需要修改或者清除父页面设置的cookie时,需要显式的指定path,不然,只是发送了一个同名不同path的cookie而已。

  这个故事告诉我们,偷懒是不对滴,指定path才是好习惯!

分享到:
评论

相关推荐

    jQuery Cookie (内附 上百行的中文使用手册,与 所有的注释中文翻译)

    jQuery Cookie是jQuery的一个插件,为开发者提供了方便、简洁的API来操作Cookie,无需处理复杂的原生JavaScript API。这个压缩包包含了一个中文版的使用手册和对源代码的详细注释,对于学习和使用jQuery Cookie非常...

    利用Python的requests实现SCU的登录获取Cookie

    在下载验证码图片后,还需要注意到获取验证码时的一个陷阱:请求中包含了随机数以防止缓存,所以我们需要在URL末尾添加一个随机值。 ```python import random captcha_url = soup.find("img", id="captchaImg")['...

    Php安全新闻早8点

    例如,可以通过变量来动态决定另一个变量的名字: ```php $varName = 'Micropoor'; ${$varName} = 'Bug'; echo "This is The {$Micropoor}s"; // 输出 "This is The Bugs" ``` - **结论:** 在实际开发中,...

    JavaScript王者归来part.1 总数2

     11.3.2.1 模拟对话框--创建一个窗口对话框及一个对话框阻塞进行的例子   11.3.2.2 showModalDialog和showModelessDialog--非W3C或ECMAScrip标准   11.3.3 状态栏   11.4 框架--上层的Window对象   11.4.1 ...

    前端安全概览及防范

    在Yupoo的案例中,攻击者利用一处XSS漏洞,构造了一个能够读取用户Cookie的恶意脚本。通过JavaScript和PHP的结合,攻击者不仅获取了用户的Cookie信息,还成功地进行了Cookie伪造,实现了对用户账户的非法访问。 **...

    jsp+javascript收集

    4. "有关 JavaScript 的 10 件让人费解的事情 - CSDN资讯.mht":这是一个关于JavaScript中的一些常见陷阱和不寻常特性的文章,可以帮助开发者避免常见错误,提高编程技巧。 5. "引用js大全.txt"、"JS.txt"、"js分页...

    JS学习总结

    然而,示例代码中展示了变量作用域的一个常见陷阱:全局变量与局部变量的混淆。例如,在函数`test()`外部声明的`var goal = 1;`在函数内部未被重新声明,导致函数内部可以直接访问并可能修改这个全局变量。这在实际...

    php和序设计 不错的学习

    PHP的历史见证了其从一个简单的个人主页工具发展成为功能全面、广泛应用的Web开发语言的过程。 #### 二、PHP语言基础 - **数据类型**:了解PHP中的基本数据类型,包括整型、浮点型、字符串、布尔型等,以及复合...

    汇总PHP编程注意事项.doc

    同样,在例2中,`isset()` 和连接符 `.` 的优先级关系导致了一个未定义索引的错误。理解这些优先级对于避免运行时错误至关重要。 2. **大小写敏感性**: PHP中函数名和类名是不区分大小写的,但变量名是区分大小写...

    投票调查功能的ASP例

    总的来说,"投票调查功能的ASP例"涉及了ASP基础、数据库操作、用户交互以及Web开发的多个方面,是学习ASP动态网站开发的一个典型应用场景。通过这个实例,开发者可以深入理解如何在实际项目中运用ASP技术,构建功能...

    PHP中文参考.zip

    PHP是免费的,而且拥有一个活跃的社区,这使得开发者能够获取丰富的资源和支持。 这个“PHP中文参考手册”是一个非常实用的工具,对于学习和精通PHP编程至关重要。CHM(Compiled Help Manual)格式是一种由微软开发...

    ASP网站实例开发源码——古典风格漂亮实用的茶叶公司网站(源码+数据库).zip

    这个压缩包提供的是一个以ASP技术构建的茶叶公司网站的实例开发源码,结合了古典风格的设计和实际的功能,旨在帮助学习者理解如何用ASP来创建一个具有商业价值的网站。 该网站实例主要包含以下几个方面的知识点: ...

    simple-gdpr-lockdown:您无需因GDPR阻止欧盟的访客。 只是锁定您的网站

    有一个陷阱。赶上又名先决条件此代码通过使用指示访问者是否在欧盟的cookie来起作用。 有几种方法可以完成此操作,对于许多人来说,使用Fastly或Akamai可以在CDN级别轻松地完成此操作。 您还可以在呈现页面之前进行...

    爬虫守则1

    3. **处理Spider Traps**:爬虫陷阱是指网站设计用来捕获爬虫的机制,如动态URL、无限循环链接等。应对策略包括: - 对于动态URL,可尝试识别并统一处理。 - 遇到循环链接时,设定循环检测阈值,超过阈值则停止...

    初级学者错误集合

    在ASP.NET中,当尝试在页面上输出数组内容时,确保正确地访问和遍历数组元素,例如`$n[0].foodImage`代表访问数组的第一个元素的`foodImage`属性。 3. **Oracle DML操作与提交**: 在DOS中执行DML操作(INSERT, ...

    gotcha

    是一组脚本,它们执行诸如,查找Cookie,令牌和极其个人化的文件之类的操作,一路创建蠕虫并远程操作摄像机上的实时流,并以27屏显示。 Gotcha!-Original 原始的陷阱!脚本是彼此之间的基础。它包括许多用途,但最...

    php编程文档

    - 当客户端首次访问服务器时,如果没有 `PHPSESSID` Cookie,则服务器会为该客户端创建一个新的 `PHPSESSID` 并将其保存在Cookie中。 - 如果客户端再次访问服务器,并带有 `PHPSESSID` Cookie,则服务器会根据该 `...

    bbs网站(初学者)

    - **conn.asp**:另一个数据库连接文件,可能与dbconn.asp类似,但可能有不同的配置或用途。 - **bbs_admin.asp**:可能是BBS的后台管理页面,供管理员进行用户管理、版块设置等操作。 4. **ASP .NET编程基础**:...

    Network Security with OpenSSL 免费

    - **SSL的工作原理**:通过建立一个加密的数据通道来确保数据传输的安全性。 - **SSL的特点**:支持多种加密算法,能够提供端到端的安全保障。 #### 1.3 SSL协议存在的问题 - **安全性挑战**:随着技术的进步,早期...

    JAVA WEB 认证题库

    一个Servlet可以与多个过滤器关联,一个过滤器也可以被多个Servlet使用,但并非每个Servlet都必须有至少一个过滤器,同样,并非每个过滤器都必须部署到至少一个Servlet。正确答案是A. 可以为一个Servlet部署多个过滤...

Global site tag (gtag.js) - Google Analytics