1

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

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

测试结果:在java代码中设置cookie中的两个测试参数,前面的jsp文件中包含javascript来alert document.cookie,java代码中设置的两个测试参数get和show在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. 如果你知道怎么做,那将非常有帮助。
4

2 回答 2

0

对于不知道 HttpOnly 的其他人:

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

因此,它是一种仅限浏览器的安全 (XSS) 技术,可防止访问 JSESSION_ID(劫持 Java 会话)等。

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

<Context useHttpOnly="true">

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

于 2013-04-26T07:47:12.767 回答
0

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

于 2013-05-28T17:45:37.110 回答