你好我工作的XSS(跨站脚本)的问题。 我的应用程序开发上的Oracle WebLogic门户。 我们使用Servlet 2.5的版本。
我已经加入下面3条线中的过滤器代码设置的HttpOnly和安全cookie。 它是工作的罚款。
String sessionid = req.getSession().getId();
res.setHeader("Set-Cookie", "JSESSIONID=" + sessionid + ";HttpOnly");
res.setHeader("SET-COOKIE", "JSESSIONID=" + sessionid + "; secure");
问题是,当我注销,并在同一个浏览器,我能够登录,但之后在jsp页面我得到会话超时问题立即登录。 我们使用WebLogic相关的API。 request.getuserprinical()API将返回空..估计是设置为null。
任何想法,请分享。
如果有任何其他的方式来设置的HttpOnly或安全标志,请帮助。
根据您的Web容器的具体情况,修改应用程序中的容器管理的会话cookie可能会导致应用服务器折腾现有的会话,并创建一个新的。 我观察到这个Tomcat上,但它可能是Weblogic的相似。
如果您使用的Servlet 3.0,你其实可以指示应用服务器,以确保所有的会话cookie都仅Http和安全具有以下片段:
<session-config>
<cookie-config>
<secure>true</secure>
<http-only>true</http-only>
</cookie-config>
</session-config>
这比上带滤波器的手工饼干黑客的更好方法。
FYI:我也写一个Java库 :注射一些在基于Servlet应用与安全相关的响应头。
您需要使用以下语法设置都仅Http和securu标志
JSESSIONID=ABC3423DF...SDF;HttpOnly;Secure
我已经使用<http-only>
和<secure>
在web.xml中的标签设置安全属性和它的工作。
<session-config>
<cookie-config>
<http-only>true</http-only>
</cookie-config>
<session-config>