环境:
tomcat6和tomcat7,jdk1.6,j2ee应用,一个applet运行在浏览器中,网站有验证机制
现象:
- 成功登录系统后
- tomcat6下:applet可以正常运行;
- tomcat7下:applet运行失败,在加载jar时就失败了
分析:
- 查看applet的java控制台:在tomcat6下请求jar时会自动带上JSESSIONID,而在tomcat7中不会导致通不过验证机制
- 打开wireshark监控通讯,发现,tomcat7下设置cookie为:比tomcat6下多了个HttpOnly
Set-Cookie: JSESSIONID=B7587AE3765290179B8CE4027545391F; Path=/cems2; HttpOnly
- 看来就是因为这个导致applet获取浏览器的cookie值时,被浏览器拒绝了
解决:
- 设置应用禁止HttpOnly或身份标识Cookie创建时创建禁止Cookie:useHttpOnly=false即可
然后安全性自己控制:如cookie加密等
<?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值进行.
分享到:
相关推荐
首先,secure属性是防止信息在传递的过程中被监听捕获后信息泄漏,HttpOnly属性的目的是防止程序获取cookie后进行攻击。 其次,GlassFish2.x支持的是servlet2.5,而servlet2.5不支持Session Cookie的"HttpOnly"属性...
完整获取webBrowser1的Cookie HttpOnly的Cookie
- **现象1**: 设置`HttpOnly`属性后,程序无法获取客户端SessionCookie的内容。 - **解决方案**: 将SessionID信息在启动Applet时传递进去,并在发送URLConnection请求时重新设置SessionCookie信息。 - **现象2**:...
例如,Applet需要在启动时获取并传递Session ID,以确保后续的URLConnection请求能够正确携带Session信息。 3. 对于依赖Session验证用户登录状态的应用,设置`secure`属性会导致HTTP请求无法携带Session信息。因此...
当一个Cookie被设置为HttpOnly时,JavaScript无法通过Document.cookie API或其他方式访问到这个Cookie。这样一来,即使网页中存在XSS漏洞,恶意脚本也无法窃取到包含敏感信息的Cookie,从而降低了攻击者盗取用户身份...
"了解 .net 获取浏览器 Cookie(包括 HttpOnly)实例分享" 在本文中,我们将探讨如何在 .net 环境中获取浏览器 Cookie,包括 HttpOnly 类型的 Cookie。 HttpOnly Cookie 是一种特殊类型的 Cookie,用于保护用户的...
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.
然而,有些Cookie被标记为`HttpOnly`,这意味着它们不能通过JavaScript等客户端脚本语言访问,以增加安全性,防止XSS(跨站脚本攻击)对Cookie的窃取。但有时开发者需要在服务器端代码中处理这些`HttpOnly` Cookie,...
这是因为很多跨站脚本攻击(XSS)都试图通过JavaScript获取或篡改用户的cookie信息,从而进行身份冒充或其他恶意行为。启用`HttpOnly`后,即使存在XSS漏洞,攻击者也无法通过脚本读取或修改这些受保护的cookie。 在...
描述部分强调这是一个实例分享,说明了文章将提供一个具体的.NET环境下获取浏览器中Cookie的方法,包括那些标记为HttpOnly的Cookie。HttpOnly属性是一种安全特性,用于防止客户端脚本访问Cookie,从而降低某些类型的...
标题中的“获取cookie非常好用的google插件”指的是在Google Chrome浏览器上的一种扩展程序,它允许用户方便地管理和操作浏览器中的Cookie数据。Cookie是网站在用户计算机上存储的小型文本文件,用于跟踪用户偏好、...
之后每次用户发起请求时,都会携带这个Session ID,服务器根据该ID识别用户并获取相应的Session信息。 #### 二、Cookie的特点 1. **类型**: - **会话Cookie**:默认情况下,Cookie是临时性的,仅在用户当前会话...
传统上,session信息存储在服务器端,通过Cookie在客户端和服务端之间传递session ID。然而,这种方式在某些情况下可能会受限,例如在无Cookie的场景或者有跨域需求时。SpringSession提供了解决这些问题的方案,它...
之后,无论用户请求哪个Tomcat实例,只要session ID相同,其他实例都能从Memcached中获取session数据,从而实现session共享。 **5. 注意事项** - 确保所有服务器之间网络通信正常,Memcached服务稳定运行。 - 由于...
1. **读取 Cookie 中的数据**:使用 `cookie.get(saveCookieId)` 方法获取指定名称的 Cookie 数据。 2. **解析 JSON 数据**:将读取的 JSON 字符串解析为对象,并遍历这些数据,将其填充到对应的表单元素中。 示例...
// 设置新的Session ID ``` #### 五、HTTPS与HTTP的区别 HTTPS协议相比于HTTP协议增加了SSL/TLS加密层,提供了数据加密传输、身份认证等安全特性。主要区别包括: - **加密传输**:HTTPS使用SSL/TLS加密,确保...
`HttpOnly`标记是一个重要的安全特性,它可以防止客户端脚本访问Cookie,从而降低敏感信息被盗取的风险。 **标签解析:** - **Mvc**:指的是Microsoft的ASP.NET MVC框架,这是一个用于构建高性能、可维护性和易于...
Cookie 的 HttpOnly 设置详解 Cookie 是一种小型文本文件,由 Web 服务器保存在用户浏览器(客户端)上,用来存储用户信息。Cookie 通常用于辨别用户身份、进行 session 跟踪。Cookie 可以包含一些不敏感的信息,如...
可以监听WKWebView的`decidePolicyFor`方法,获取到新的Cookie。 ```swift let webView = WKWebView(frame: .zero) webView.navigationDelegate = self extension ViewController: WKNavigationDelegate { func ...
当用户登录成功后,服务器创建一个Session,并将用户的登录信息存储在Session中,然后将Session ID通过Cookie返回给客户端。后续请求中,服务器通过Session ID找到对应的Session数据,判断用户是否已登录。 ### SSO...