Cookie被定义到weblogic.xml中
<session-descriptor>
<cookie-name>A_JSESSIONID</cookie-name>
</session-descriptor>
当我们使用HTTPS连接时,A_JSESSIONID cookie没有安全状态。 Burp安全扫描发现'SSL cookie没有安全标志设置'问题。
我不能用
<cookie-secure>true</cookie-secure>
因为我们的应用程序也可以被HTTP使用。
我试图在Filter中设置安全状态
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
try {
HttpServletRequest request = (HttpServletRequest) servletRequest;
Cookie[] cookies = request.getCookies();
if(cookies!=null && servletRequest.isSecure())
{
for (Cookie cookie : cookies) {
logger.debug("set Secure for cookie: " + cookie.getName());
cookie.setSecure(true);
}
}
...
记录器显示A_JSESSIONID cookie。但这不起作用。它仍然不安全。
我也找到了一个信息(https://docs.oracle.com/cd/E23943_01/web.1111/e13711/thin_client.htm#SCPRG139):
WebLogic Server使用两个cookie:JSESSIONID cookie和_WL_AUTHCOOKIE_JSESSIONID cookie。默认情况下,JSESSIONID cookie永远不会安全,但_WL_AUTHCOOKIE_JSESSIONID cookie始终是安全的。只有在使用加密通信通道时才会发送安全cookie。假设标准HTTPS登录(HTTPS是加密的HTTP连接),您的浏览器将获得两个cookie。
在WebLogic控制台中将AuthCookieEnabled设置为true,但我在cookie列表中看不到_WL_AUTHCOOKIE_A_JSESSIONID。只是A_JSESSIONID没有安全状态。
我怎样才能动态设置weblogic cookie安全?或者我如何找到_WL_AUTHCOOKIE_A_JSESSIONID?
谢谢。
这是我到目前为止对这个主题的阅读 -
像这样的代码
workCookie = new Cookie(cookieName,"startValue");
workCookie.setPath("/");
workCookie.setMaxAge(10 * 24 * 3600);
workCookie.setSecure(true);
response.addCookie(workCookie);
现在,当你在http中访问你的应用程序时,你看不到这个cookie,当你通过https访问时,你会看到这个cookie。
希望这可以帮助