代码之家  ›  专栏  ›  技术社区  ›  agabrys

是否应将打算删除的空Cookie标记为安全的?

  •  1
  • agabrys  · 技术社区  · 7 年前

    SonarQube发现问题( Cookies should be "secure" )在以下代码中:

    public static void eraseSamlCookie(final HttpServletResponse response) {
        final String cookieName = Config.getParameter(Constants.SSO_COOKIE_NAME);
        if (cookieName != null) {
            final Cookie cookie = new Cookie(cookieName, ""); 
            cookie.setMaxAge(0);
            cookie.setPath("/");
            cookie.setHttpOnly(true);
            response.addCookie(cookie);
        }
    }
    

    创建cookie只是为了删除客户端上具有相同名称的cookie( max-age=0 ).

    是否有任何合理的理由将其标记为安全?规则是否应忽略值为空且最大年龄设置为0的Cookie?

    squid:S2092 description

    1 回复  |  直到 5 年前
        1
  •  0
  •   agabrys    5 年前

    规则描述被扩展了,现在我看到它有意义了。为什么?这一部分很重要:

    当cookie受到安全属性设置为true的保护时,浏览器不会通过未加密的HTTP请求发送cookie,因此在中间人攻击期间,未经授权的人无法观察到cookie。默认情况下,安全标志设置为false,因此,如果执行了参与攻击的人员,cookie可能会被盗。

    在我的情况下,创建cookie的唯一原因是在客户端用相同的名称覆盖cookie。当cookie不安全时,有人可能会更改其内容,因此可以为其提供不同的内容,而不是在客户端清理cookie。这意味着 secure 很有道理。