【问题标题】:Set secure cookie from weblogic.xml for HTTPS从 weblogic.xml 为 HTTPS 设置安全 cookie
【发布时间】:2019-06-17 02:47:31
【问题描述】:

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 使用。

我尝试在过滤器中设置安全状态

    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。

AuthCookieEnabled 在 WebLogic 控制台中设置为 true,但我在 cookie 列表中看不到 _WL_AUTHCOOKIE_A_JSESSIONID。只是没有安全状态的 A_JSESSIONID。

如何动态设置 weblogic cookie 安全? 或者我怎样才能找到 _WL_AUTHCOOKIE_A_JSESSIONID?

谢谢。

【问题讨论】:

    标签: spring cookies weblogic setcookie jsessionid


    【解决方案1】:

    这是我到目前为止关于这个主题的阅读 -

    1. 确保管理控制台、域 > 配置 > Web Applications > Auth Cookie Enabled 被选中(默认)
    2. 列表项启用 SSL 课程
    3. 列表项

    这样的代码

       workCookie = new Cookie(cookieName,"startValue");
       workCookie.setPath("/");
       workCookie.setMaxAge(10 * 24 * 3600);
       workCookie.setSecure(true);
       response.addCookie(workCookie);
    

    现在当您以 http 访问您的应用程序时,您看不到此 cookie,而当您通过 https 访问时,您将看到此 cookie。

    希望对你有帮助

    【讨论】:

    • 非常感谢您的评论。
    • 1 - 好的; 2 - 完成; 3 - 此代码适用于在我的应用程序中创建的 cookie,但是 JSESSION cookie 呢,它们是由 WebLogic 创建的。我可以从过滤器中的请求会话中获取 cookie,设置安全和 addCookie 以响应吗?你不知道_WL_AUTHCOOKIE_A_JSESSIONID吗?
    • 您好,您在这里没有正确回答,您刚刚解释了如何创建与身份验证 cookie 无关的自定义 cookie。问题是无法设置以编程方式保护的 JSESSIONID cookie。这个cookie是由weblogic在内部代码中创建的
    • @nmeylan 没错,我也有同样的结论。所以WebLogic中应该有默认设置cookie Secure的方式。但我无法仅通过 Auth Cookie Enabled 启用该功能。
    • 确实,您必须在应用程序中嵌入的 weblogic.xml 文件中执行此操作
    猜你喜欢
    • 2017-09-11
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 2011-06-02
    • 2018-08-26
    • 2016-03-14
    • 2018-10-05
    • 2011-11-25
    相关资源
    最近更新 更多