Tomcat7新特性?cookie HttpOnly的那些事(sessionid获取麻烦了)
2014-05-19 17:10
851 查看
原地址:/article/3828372.html
tomcat6和tomcat7,jdk1.6,j2ee应用,一个applet运行在浏览器中,网站有验证机制
成功登录系统后
tomcat6下:applet可以正常运行;
tomcat7下:applet运行失败,在加载jar时就失败了
查看applet的java控制台:在tomcat6下请求jar时会自动带上JSESSIONID,而在tomcat7中不会导致通不过验证机制
打开wireshark监控通讯,发现,tomcat7下设置cookie为:比tomcat6下多了个HttpOnly
Js代码
Set-Cookie: JSESSIONID=B7587AE3765290179B8CE4027545391F; Path=/cems2; HttpOnly
看来就是因为这个导致applet获取浏览器的cookie值时,被浏览器拒绝了
设置应用禁止HttpOnly或身份标识Cookie创建时创建禁止Cookie:useHttpOnly=false即可
然后安全性自己控制:如cookie加密等
Xml代码
<?xml version="1.0" encoding="UTF-8" ?>
<Context path="/${tomcat.deployName}" docBase="${basedir}/WebRoot" useHttpOnly="false"/>
数字签名:不可行,注意applet plugin jvm初始化时,就会去网站检查jar,实际上这个时候还只是jvm plugin load class——我们无法控制,所以也无法动作
jar的访问不验证,签名jar,然后在applet启动时,强制读取cookie(通过签名了),存储cookie到applet环境中——被证明依然不可行,官方好像说jdk1.6u16就解决了这个问题,不过貌似我这里不行ubuntu 10.10 ff和chrome都测试了,试想如果真的可以,那么任何plugin也可以读取,安全性又回到了httponly=false的情形了。
主动发送cookie,通过在页面设置cookie做为paramters传递给plugin,然后所有访问服务器资源的连接都主动设置此cookie即可,经过验证是可行的。
权衡1和4,还是采用方法1最快最容易实施
或启用useHttpOnly=true然后,用户登录后设置cookie[appletkey][HttpOnly=false],所有applet的访问验证都通过appletkey cookie值进行.
环境:
tomcat6和tomcat7,jdk1.6,j2ee应用,一个applet运行在浏览器中,网站有验证机制
现象:
成功登录系统后tomcat6下:applet可以正常运行;
tomcat7下:applet运行失败,在加载jar时就失败了
分析:
查看applet的java控制台:在tomcat6下请求jar时会自动带上JSESSIONID,而在tomcat7中不会导致通不过验证机制打开wireshark监控通讯,发现,tomcat7下设置cookie为:比tomcat6下多了个HttpOnly
Js代码
Set-Cookie: JSESSIONID=B7587AE3765290179B8CE4027545391F; Path=/cems2; HttpOnly
看来就是因为这个导致applet获取浏览器的cookie值时,被浏览器拒绝了
解决:
设置应用禁止HttpOnly或身份标识Cookie创建时创建禁止Cookie:useHttpOnly=false即可然后安全性自己控制:如cookie加密等
Xml代码
<?xml version="1.0" encoding="UTF-8" ?>
<Context path="/${tomcat.deployName}" docBase="${basedir}/WebRoot" useHttpOnly="false"/>
数字签名:不可行,注意applet plugin jvm初始化时,就会去网站检查jar,实际上这个时候还只是jvm plugin load class——我们无法控制,所以也无法动作
jar的访问不验证,签名jar,然后在applet启动时,强制读取cookie(通过签名了),存储cookie到applet环境中——被证明依然不可行,官方好像说jdk1.6u16就解决了这个问题,不过貌似我这里不行ubuntu 10.10 ff和chrome都测试了,试想如果真的可以,那么任何plugin也可以读取,安全性又回到了httponly=false的情形了。
主动发送cookie,通过在页面设置cookie做为paramters传递给plugin,然后所有访问服务器资源的连接都主动设置此cookie即可,经过验证是可行的。
权衡1和4,还是采用方法1最快最容易实施
或启用useHttpOnly=true然后,用户登录后设置cookie[appletkey][HttpOnly=false],所有applet的访问验证都通过appletkey cookie值进行.
相关文章推荐
- 去除asp.net 2.0的会话cookie ASP.NET_SessionId 的httponly属性
- HTTP-only Cookie 脚本获取JSESSIONID的方法
- 【转】HTTP-only Cookie 脚本获取JSESSIONID的方法
- XSS与HTTP-only Cookie 脚本获取JSESSIONID的方法
- 如何获取HttpOnly Cookie
- 获取 httponly 的 cookie
- Retrieve HttpOnly Session Cookie in WebBrowser
- HttpClient sessionID获取与设置
- Delphi IDhttp 获取Cookie
- vb6 获取 http only 的 Cookie
- Tomcat为Cookie设置HttpOnly属性
- 使用csExWB Webbrowser 控件获取HttpOnly的cookie
- C#如何通过SOCKET的方式获取HTTPONLY COOKIE
- HttpQuery httpClient with cookie sessionID
- Tomcat and HttpOnly Session Cookies
- C#使用SOCKET获取ASPSESSIONID、PHPSESSID等Cookie
- C#如何通过Socket的方式获取httponly cookie
- .net 获取浏览器Cookie(包括HttpOnly)
- 关于tomcat7服务下面js无法获取JSESSIONID的cookie信息
- 关于Cookie 的HttpOnly属性(java/web操作cookie+Tomcat操作jsessionid)