`
skzr.org
  • 浏览: 366039 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Tomcat7新特性?cookie HttpOnly的那些事(sessionid获取麻烦了)

    博客分类:
  • J2EE
阅读更多

环境:

tomcat6和tomcat7,jdk1.6,j2ee应用,一个applet运行在浏览器中,网站有验证机制

现象:

  1. 成功登录系统后
  2. tomcat6下:applet可以正常运行;
  3. tomcat7下:applet运行失败,在加载jar时就失败了

分析:

  1. 查看applet的java控制台:在tomcat6下请求jar时会自动带上JSESSIONID,而在tomcat7中不会导致通不过验证机制
  2. 打开wireshark监控通讯,发现,tomcat7下设置cookie为:比tomcat6下多了个HttpOnly
    Set-Cookie: JSESSIONID=B7587AE3765290179B8CE4027545391F; Path=/cems2; HttpOnly
  3. 看来就是因为这个导致applet获取浏览器的cookie值时,被浏览器拒绝了

解决:

  1. 设置应用禁止HttpOnly或身份标识Cookie创建时创建禁止Cookie:useHttpOnly=false即可
    然后安全性自己控制:如cookie加密等
    <?xml version="1.0" encoding="UTF-8" ?>
    <Context path="/${tomcat.deployName}" docBase="${basedir}/WebRoot" useHttpOnly="false"/>
     
  2. 数字签名不可行,注意applet plugin jvm初始化时,就会去网站检查jar,实际上这个时候还只是jvm plugin load class——我们无法控制,所以也无法动作
  3. jar的访问不验证,签名jar,然后在applet启动时,强制读取cookie(通过签名了),存储cookie到applet环境中——被证明依然不可行,官方好像说jdk1.6u16就解决了这个问题,不过貌似我这里不行ubuntu 10.10 ff和chrome都测试了,试想如果真的可以,那么任何plugin也可以读取,安全性又回到了httponly=false的情形了。
  4. 主动发送cookie,通过在页面设置cookie做为paramters传递给plugin,然后所有访问服务器资源的连接都主动设置此cookie即可,经过验证是可行的。
  5. 权衡1和4,还是采用方法1最快最容易实施
  6. 或启用useHttpOnly=true然后,用户登录后设置cookie[appletkey][HttpOnly=false],所有applet的访问验证都通过appletkey cookie值进行.

分享到:
评论
4 楼 skzr.org 2012-07-05  
现在都jdk7u5了,不知道这个有没有解决。但是查资料说httponly=true,那么浏览器将禁止一切插件获取此cookie。
3 楼 skzr.org 2012-07-05  
asdfghhong 写道
Hi,
我想问下最后一条 “或启用useHttpOnly=true然后,用户登录后设置cookie[appletkey][HttpOnly=false],所有applet的访问验证都通过appletkey cookie值进行.”
能够详细的说下在程序里面怎么设置吗,我现在急需解决这个applet的问题。


* 还是采用方法1最快最容易实施 *

"或启用useHttpOnly=true然后,用户登录后设置cookie[appletkey][HttpOnly=false],所有applet的访问验证都通过appletkey cookie值进行."——意思是,服务器通过此appletkey去寻找对应的session,而不是通过jsessionid,这个比较复杂。

1. 首先用户打开applet页面时,服务器根据sessionId生成一个appletkey的值形成一对一可逆映射,且这个cookie的httponly=false
1. 因为这个cookie[appletkey].httponly=false,当applet访问服务器时会传递到服务器,服务器根据这个值找到实际对应的session进行绑定。

其实我觉得方法1就可以了,毕竟httponly只能防君子,那么何必整这么复杂呢。
2 楼 asdfghhong 2012-07-05  
Hi,
我想问下最后一条 “或启用useHttpOnly=true然后,用户登录后设置cookie[appletkey][HttpOnly=false],所有applet的访问验证都通过appletkey cookie值进行.”
能够详细的说下在程序里面怎么设置吗,我现在急需解决这个applet的问题。
1 楼 skzr.org 2011-03-26  
呵呵,如果大家解决了cookie httponly带来的问题,我们一起讨论讨论

希望官方可以给出好的解决方案

相关推荐

    Session Cookie的HttpOnly和secure属性

    首先,secure属性是防止信息在传递的过程中被监听捕获后信息泄漏,HttpOnly属性的目的是防止程序获取cookie后进行攻击。 其次,GlassFish2.x支持的是servlet2.5,而servlet2.5不支持Session Cookie的"HttpOnly"属性...

    完整获取webBrowser1.Document.Cookie取不到HttpOnly的Cookie

    完整获取webBrowser1的Cookie HttpOnly的Cookie

    cookie设置httpOnly和secure属性实现及问题

    - **现象1**: 设置`HttpOnly`属性后,程序无法获取客户端SessionCookie的内容。 - **解决方案**: 将SessionID信息在启动Applet时传递进去,并在发送URLConnection请求时重新设置SessionCookie信息。 - **现象2**:...

    session配置secure和httpOnly

    例如,Applet需要在启动时获取并传递Session ID,以确保后续的URLConnection请求能够正确携带Session信息。 3. 对于依赖Session验证用户登录状态的应用,设置`secure`属性会导致HTTP请求无法携带Session信息。因此...

    cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击.zip_js设置cookie值

    当一个Cookie被设置为HttpOnly时,JavaScript无法通过Document.cookie API或其他方式访问到这个Cookie。这样一来,即使网页中存在XSS漏洞,恶意脚本也无法窃取到包含敏感信息的Cookie,从而降低了攻击者盗取用户身份...

    .net 获取浏览器Cookie(包括HttpOnly)实例分享.docx

    "了解 .net 获取浏览器 Cookie(包括 HttpOnly)实例分享" 在本文中,我们将探讨如何在 .net 环境中获取浏览器 Cookie,包括 HttpOnly 类型的 Cookie。 HttpOnly Cookie 是一种特殊类型的 Cookie,用于保护用户的...

    httpwebreqeust读取httponly的cookie方法

    然而,有些Cookie被标记为`HttpOnly`,这意味着它们不能通过JavaScript等客户端脚本语言访问,以增加安全性,防止XSS(跨站脚本攻击)对Cookie的窃取。但有时开发者需要在服务器端代码中处理这些`HttpOnly` Cookie,...

    Retrieve HttpOnly Session Cookie in WebBrowser

    In order to help mitigate the risk of cross-site scripting, a new feature has been introduced in Microsoft Internet Explorer 6 SP1.... A cookie with this attribute is called an HTTP-only cookie.

    Express中间件用于保护cookie通过HttpOnly并添加标记检查是否存在

    这是因为很多跨站脚本攻击(XSS)都试图通过JavaScript获取或篡改用户的cookie信息,从而进行身份冒充或其他恶意行为。启用`HttpOnly`后,即使存在XSS漏洞,攻击者也无法通过脚本读取或修改这些受保护的cookie。 在...

    .net 获取浏览器Cookie(包括HttpOnly)实例分享

    描述部分强调这是一个实例分享,说明了文章将提供一个具体的.NET环境下获取浏览器中Cookie的方法,包括那些标记为HttpOnly的Cookie。HttpOnly属性是一种安全特性,用于防止客户端脚本访问Cookie,从而降低某些类型的...

    获取cookie非常好用的google插件

    标题中的“获取cookie非常好用的google插件”指的是在Google Chrome浏览器上的一种扩展程序,它允许用户方便地管理和操作浏览器中的Cookie数据。Cookie是网站在用户计算机上存储的小型文本文件,用于跟踪用户偏好、...

    cookie和session

    之后每次用户发起请求时,都会携带这个Session ID,服务器根据该ID识别用户并获取相应的Session信息。 #### 二、Cookie的特点 1. **类型**: - **会话Cookie**:默认情况下,Cookie是临时性的,仅在用户当前会话...

    SpringSession同时支持Cookie和header策略

    传统上,session信息存储在服务器端,通过Cookie在客户端和服务端之间传递session ID。然而,这种方式在某些情况下可能会受限,例如在无Cookie的场景或者有跨域需求时。SpringSession提供了解决这些问题的方案,它...

    Windows7 + Nginx + Memcached + Tomcat 集群 session 共享

    之后,无论用户请求哪个Tomcat实例,只要session ID相同,其他实例都能从Memcached中获取session数据,从而实现session共享。 **5. 注意事项** - 确保所有服务器之间网络通信正常,Memcached服务稳定运行。 - 由于...

    Extjs 关于 cookie的操作

    1. **读取 Cookie 中的数据**:使用 `cookie.get(saveCookieId)` 方法获取指定名称的 Cookie 数据。 2. **解析 JSON 数据**:将读取的 JSON 字符串解析为对象,并遍历这些数据,将其填充到对应的表单元素中。 示例...

    session与cookie的区别以及配置使用

    // 设置新的Session ID ``` #### 五、HTTPS与HTTP的区别 HTTPS协议相比于HTTP协议增加了SSL/TLS加密层,提供了数据加密传输、身份认证等安全特性。主要区别包括: - **加密传输**:HTTPS使用SSL/TLS加密,确保...

    mvc中cookie安全

    `HttpOnly`标记是一个重要的安全特性,它可以防止客户端脚本访问Cookie,从而降低敏感信息被盗取的风险。 **标签解析:** - **Mvc**:指的是Microsoft的ASP.NET MVC框架,这是一个用于构建高性能、可维护性和易于...

    第九节 cookie的httponly设置-01

    Cookie 的 HttpOnly 设置详解 Cookie 是一种小型文本文件,由 Web 服务器保存在用户浏览器(客户端)上,用来存储用户信息。Cookie 通常用于辨别用户身份、进行 session 跟踪。Cookie 可以包含一些不敏感的信息,如...

    Cookie 实现WebView自动登录

    可以监听WKWebView的`decidePolicyFor`方法,获取到新的Cookie。 ```swift let webView = WKWebView(frame: .zero) webView.navigationDelegate = self extension ViewController: WKNavigationDelegate { func ...

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

    例如,在某些 Web 应用程序中,如果 Cookie 中的路径属性设置为当前项目的路径,那么攻击者可以通过分析 Cookie 中的路径属性来获取项目路径,从而实施攻击。 解决思路 解决 Cookie 路径属性暴露问题有两种思路...

Global site tag (gtag.js) - Google Analytics