我尝试了很多方法来使用httponly
标志来阻止XSS
攻击,但都失败了。
常用方法是在context.xml中设置使用HttpOnly = true
对于测试结果:在java代码中设置两个测试参数在cookie和前面的jsp文件中包含javascript以警告document.cookie
,在java代码中设置的两个测试参数是get并在警报中显示。
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);
答案 0 :(得分:0)
对于其他不了解HttpOnly的人:
HttpOnly = true 是一个相对较新的属性,可让浏览器无法访问JavaScript。
因此,它是一种仅限浏览器的安全性(XSS)技术,可防止访问JSESSION_ID(劫持java会话)等。
因此,您始终可以在Cookie本身中设置HttpOnly属性。对于Java会话ID,我现在认为它是默认的,至少它应该是。
<Context useHttpOnly="true">
这似乎仅适用于JSESSIONID。我刚刚在SO中找到this。
答案 1 :(得分:0)
最近我正在处理 http-only = true Cookie。在我的研究中,我发现Mozilla和Chrome不允许Java applet使用 http-only = true cookie。我在访问JsessionidSSO cookie时遇到了问题。在我研究JAVA的bug时,我发现了this bug 虽然在IE中读取cookie没有问题,因为IE已提供InternetGetCookieEx() API来访问仅限http 的Cookie,并添加了只有IE8及以上版本的标记INTERNET_COOKIE_HTTPONLY。因此,访问仅限http的cookie的问题仍未解决,因为java提出了java 7 update 40中的修复,而当前版本是java 7 update21。