用 Java 解决“加密会话 (ssl) cookie 中缺少安全属性”

Posted

技术标签:

【中文标题】用 Java 解决“加密会话 (ssl) cookie 中缺少安全属性”【英文标题】:Solve "missing secure attribute in encrypted session (ssl) cookie" with Java 【发布时间】:2018-11-15 22:41:04 【问题描述】:

最近,IBM Security AppScan 发现了一个问题,即加密会话 (ssl) cookie 中缺少安全属性。报告如下:

这个应用程序是 Java 代码,我添加了一个过滤器来设置所有 cookie 的安全,代码:

public class BasicFilter implements Filter 
@Override
public void init(FilterConfig filterConfig) throws ServletException 

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException 
    HttpServletRequest req = (HttpServletRequest) servletRequest;
    Cookie[] cookies = req.getCookies();
    HttpServletResponse resp = (HttpServletResponse) servletResponse;
    if( cookies != null && cookies.length > 0) 
        for (int i = 0; i < cookies.length; i++) 
            cookies[i].setSecure(true);
            cookies[i].setHttpOnly(true);
            resp.addCookie(cookies[i]);
        
    
    filterChain.doFilter(req,resp);


@Override
public void destroy() 


它在所有 cookie 响应两次这样的情况下有效,它会尝试一遍又一遍地登录(使用 SSO 登录):

感谢您的帮助以及如何启用安全和解决 cookie 问题,希望你们能给我一些解决此问题的想法。 谢谢!

【问题讨论】:

另外,大部分 cookie 是由单点登录(sso)设置的,当我在本地测试时,由于我没有在本地启用 sso,所以没有 cookie 问题,希望这条消息能帮助你。 【参考方案1】:

IBM 支持论坛中也发布了相同的问题。您应该研究配置修复。请看这里

https://www.ibm.com/support/pages/1505-ifix-po05616-missing-secure-attribute-encrypted-session-ssl-cookie-and-missing-httponly-session-cookie

【讨论】:

以上是关于用 Java 解决“加密会话 (ssl) cookie 中缺少安全属性”的主要内容,如果未能解决你的问题,请参考以下文章

用 Java 解决“加密会话 (ssl) cookie 中缺少安全属性”

关于oracle数据库死锁,请大神进。为啥用java synchronized 关键字解决不了?怎么解决死锁问题?

递归编程解决汉诺塔问题。用Java实现

用eclipse 检索SVN 上 myEclipse 建的web项后,成java项目解决方法

用FreeTTS兑现Java语音程序怎么解决

Java用数据结构解决实现问题之数学问题