2012-11-17 102 views
2

我已經爲jboss 5中部署的應用程序(內置於struts和hibernate框架)進行了web掃描,該應用程序報告了「Set-cookie does not use HTTPOnly keyword. The web application does not utilize HTTPOnly cookies」。這是什麼意思。我找了一些後,只是增加了一個行我Ĵboss/deploy/jbossweb.sar/context.xml作爲httpOnly cookie

<SessionCookie secure="true" useHttpOnly="true" > 

運行應用程序時設置的是,我收到錯誤後。
是否有我缺少的配置?

回答

0

是什麼意思

HttpOnly標誌HTTP響應報頭指示到瀏覽器客戶端訪問JSESSION_ID或其他會話級cookie類型標識符不應該被允許。這是爲了防止通過XSS(或其他涉及從客戶端劫持會話的攻擊)中的客戶端腳本惡意訪問會話令牌。目前幾乎所有主流瀏覽器都支持此標誌(請參閱支持瀏覽器的this list),但在不支持瀏覽器的瀏覽器中忽略它。見在OWASP site

更多關於這方面的信息將其設置爲Tomcat和它的分支,包括JBoss類似,通過在你的上下文文件如下:

<session-config> 
    <cookie-config> 
     <http-only>true</http-only> 
    </cookie-config> 
</session-config> 

<SessionCookie secure="true" httpOnly="true" /> 
+0

除了在我的jboss中進行配置之外,應用程序中是否需要配置? – bablu

+0

@bablu,必填?沒有。但是你可以配置一個servlet過濾器,在你的應用程序的每個http響應中插入這個頭文件作爲失敗保護,而不是必需的 – kolossus

+0

在servlet過濾器代碼中,我必須添加String sessionid = request.getSession()。getId (); response.setHeader(「SET-COOKIE」,「JSESSIONID =」+ sessionid +「; HttpOnly」); else request.getSession(false)總是返回null。我不知道爲什麼,但添加這些幾行後,應用程序運行成功。所以我的疑問是 - 這2條線肯定是必需的。這兩行我從https://www.owasp.org/index.php/HttpOnly站點獲得。這裏提到,對於servlet版本<3(在我的情況下爲2.4),這兩行是必需的 – bablu

0

試試這個:

<SessionCookie secure="true" httpOnly="true" /> 
0

Servlet 3.0(Java EE 6)引入了一種爲會話cookie配置安全屬性的標準方法,這可以通過在web.xml中應用以下配置來完成

<session-config> 
    <cookie-config> 
    <secure>true</secure> 
    <http-only>true</http-only> 
    </cookie-config> 
</session-config> 
+0

這是一個相同的答案,很少有解釋。或者解釋爲什麼這是一個更好的答案,或者按照您的建議編輯現有答案以包含''標籤。 –