Kir*_*ran 13 java security xss httponly
嗨,我正在研究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");
Run Code Online (Sandbox Code Playgroud)
问题是,当我在同一个浏览器中注销并立即登录时,我能够登录,但在jsp页面上,我收到会话超时问题.我们使用weblogic相关的apis.request.getuserprinical()api返回null ..猜测它设置为null.
任何想法请分享.
如果有任何其他方式设置httponly或安全标志请帮助.
Jas*_*ols 20
根据Web容器的具体情况,在应用程序中修改容器管理的会话cookie可能会导致应用服务器丢弃现有会话并创建新会话.我在Tomcat上观察过这一点,但对于Weblogic来说可能类似.
如果您正在使用Servlets 3.0,您实际上可以指示应用服务器使用以下片段确保所有会话cookie都是HttpOnly和Secure:
<session-config>
<cookie-config>
<secure>true</secure>
<http-only>true</http-only>
</cookie-config>
</session-config>
Run Code Online (Sandbox Code Playgroud)
这是一种比使用过滤器手动黑客攻击cookie更好的方法.
仅供参考:我还编写了一个Java库,它在基于Servlet的应用程序中注入了许多与安全相关的响应头.