首页 > 解决方案 > 部署时覆盖 Java Spring Strict-Transport-Security

问题描述

我是 Java Spring 安全的新手。我已经能够成功添加一些 HTTP 标头并通过下面的代码部署它们。

基本 HTTP 标头工作后,我还为 Strict-Transport-Security 添加了标头。它似乎在本地工作,但是一旦部署,该值就会被覆盖。

我已经与我们的一些架构师进行了交谈,他们不相信在这个 Java 应用程序和浏览器之间存在任何可能覆盖/替换值的东西。他们认为这可能是 Spring 中与我在这里的代码发生冲突的东西。

好奇是否有人有这方面的经验并可以提供一些建议。

我已经包含了一些 Chrome 向我显示标题的屏幕截图。

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

        response.setHeader("Content-Security-Policy",
                "default-src https: http: 'unsafe-inline' 'unsafe-eval'; " +
                "script-src 'self' 'unsafe-inline' 'unsafe-eval'; " +
                "object-src 'none'; " +
                "base-uri 'self'; " +
                "frame-ancestors 'self'; " +
                "form-action https: http: 'self'; "
        );

        response.setHeader("Strict-Transport-Security",
                "max-age=0; " +
                "Cache-Control: no-cache, no-store, must-revalidate, private; " +
                "Pragma: no-cache; " +
                "Expires: 0; " +
                "includeSubDomains"
        );

        response.setHeader("Upgrade-Insecure-Requests", "1");
        response.setHeader("X-Frame-Options", "DENY");
        response.setHeader("X-XSS-Protection", "1; mode=block");
        response.setHeader("Referrer-Policy", "no-referrer-when-downgrade");

        super.postHandle(request, response, handler, modelAndView);
    }
}```

[![local deployed changes][1]][1]


[![server deployed changes][2]][2]


  [1]: https://i.stack.imgur.com/3LGEd.png
  [2]: https://i.stack.imgur.com/8NAMn.png

标签: javaspringhttpshsts

解决方案


推荐阅读