`
skzr.org
  • 浏览: 365493 次
  • 性别: 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,用于保护用户的...

    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.

    httpwebreqeust读取httponly的cookie方法

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

    cookie+session实现的单点登录案例

    当用户登录成功后,服务器创建一个Session,并将用户的登录信息存储在Session中,然后将Session ID通过Cookie返回给客户端。后续请求中,服务器通过Session ID找到对应的Session数据,判断用户是否已登录。 ### SSO...

Global site tag (gtag.js) - Google Analytics