【问题标题】:HttpOnly flag can't work on tomcat6.0.36HttpOnly 标志不能在 tomcat6.0.36 上工作
【发布时间】:2013-04-20 06:11:45
【问题描述】:

我尝试了很多方法来使用httponly标志来防止XSS攻击,但都失败了。

常见的方法是在 context.xml 中设置 use HttpOnly=true

为了测试结果:在java代码中设置cookie中的两个测试参数,并且在前面的jsp文件中包含javascript来提醒document.cookie,java代码中设置的两个测试参数是get并显示在alert中。

Java 代码:

 Cookie cookie = new Cookie("httponlytest","testsss");  
 response.addCookie(cookie); 
 Cookie cookie1 = new Cookie("testhttponly","successfu"); 
 response.addCookie(cookie1); 

jsp文件中的javascript:

alert("cookie------------"+document.cookie);
  1. 我做错了什么吗?
  2. 如果您知道怎么做,那将非常有帮助。

【问题讨论】:

    标签: httponly


    【解决方案1】:

    对于不知道 HttpOnly 的其他人:

    HttpOnly=true 是一个相对较新的属性,可让 JavaScript 无法访问浏览器中的 cookie。

    所以它是一种仅限浏览器的安全 (XSS) 技术来防止访问 JSESSION_ID(劫持 java 会话)等。

    因此,您始终可以在 Cookie 本身中设置 HttpOnly 属性。对于 Java 会话 ID,我认为它现在是默认值,至少应该是。

    <Context useHttpOnly="true">
    

    这似乎只适用于 JSESSIONID。我刚刚在 SO 中找到了this

    【讨论】:

    • 你的意思是在上下文中设置useHttpOnly="true" 只适用于JSESSIONID,后端java代码中设置的cookie仍然可以通过javascript获取,对吗?如果是这样,它可以防止XSS攻击吗?你说的对,如果java代码中的cookie setSecure(true),这个cookie不能被javascript获取。
    • setSecure 用于https:。使用Cookie.setHttpOnly(true)
    【解决方案2】:

    最近我正在处理 http-only=true cookie。在我的研究中,我发现 Mozilla 和 Chrome 不允许 java applet 使用 http-only=true cookie。我在访问 JsessionidSSO cookie 时遇到问题。在我研究 JAVA 的错误时,我发现了this bug 虽然在 IE 中读取 cookie 没有问题,因为 IE 提供了 InternetGetCookieEx() API 来访问 http-only cookie 并添加了标志 INTERNET_COOKIE_HTTPONLY 仅适用于 IE8 及以上版本。所以访问 http-only cookie 的问题仍然没有解决,因为 java 在 java 7 update 40 中提出了修复,而当前版本是 java 7 update21。

    【讨论】:

      猜你喜欢
      • 2014-07-21
      • 1970-01-01
      • 2010-09-09
      • 2013-04-02
      • 2011-05-08
      • 1970-01-01
      • 2017-03-04
      • 1970-01-01
      • 2018-02-07
      相关资源
      最近更新 更多