2013-04-26 84 views
1

我試過很多方法使用httponly標誌來防止XSS攻擊,但都失敗了。HttpOnly標誌不能在tomcat6.0.36上工作

普通的方法是,在使用的HttpOnly = true在context.xml中

對於測試結果:在Java代碼設置兩個測試參數在cookie並在前面的jsp文件包括JavaScript來提醒document.cookie,所述在java代碼中設置的兩個測試參數被獲取並顯示在警報中。

Java代碼:

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

的JavaScript在JSP文件:

alert("cookie------------"+document.cookie); 
  1. 有什麼我做錯了什麼?
  2. 如果你知道如何,這將是非常有益的。

回答

0

對於其他人誰不知道僅Http:

僅Http =真是一個相對新的屬性,使瀏覽器一個cookie無法訪問的JavaScript。

所以這是一個瀏覽器唯一安全(XSS)技術,以防止訪問JSESSION_ID(劫持Java會話)等。

所以你總是可以在Cookie本身中設置HttpOnly屬性。對於Java會話ID,它現在是默認的,我認爲,至少應該是。

<Context useHttpOnly="true"> 

這似乎只適用於JSESSIONID。我剛剛在SO中發現了this

+0

感謝您的回答。 – zjzhangkui 2013-04-27 09:01:25

+0

你的意思是通過在上下文中設置useHttpOnly =「true」來爲JSESSIONID工作,在後端Java代碼中設置的cookie仍然可以通過javascript獲取,對吧?如果是這樣,它是否可以防止XSS攻擊?你說得對,如果在java代碼中對cookie設置了setSecure(true),那麼這個cookie不能被javascript獲取。 – zjzhangkui 2013-04-27 09:26:17

+0

'setSecure'用於'https:'。使用[Cookie.setHttpOnly(true)](http://docs.oracle.com/javaee/7/api/javax/servlet/http/Cookie.html)。 – 2013-04-27 20:38:10

0

最近我在處理http-only = true cookies。在我的研究中,我發現Mozilla和Chrome不允許Java小程序使用http-only = true cookie。我在訪問JsessionidSSO cookie時遇到了問題。在我對JAVA的漏洞研究,我發現this bug 雖然IE沒有問題閱讀餅乾爲IE提供了InternetGetCookieEx() API的訪問僅HTTP餅乾和添加僅IE8及以上版本的標誌INTERNET_COOKIE_HTTPONLY。所以訪問http-only cookies的問題仍然沒有解決,因爲java在java 7 update 40中提出了修正,而當前版本是java 7 update21。

相關問題