2017-01-16 138 views
0

我想在Spring MVC中的响应报头下方添加标题的响应:添加Security头Spring MVC中的应用

X-XSS-Protection: 1; mode=block 
X-Content-Type-Options: nosniff 

我已经在一个延伸WebMvcConfigurerAdapter MvcConfig文件下面写代码。

@Bean 
    public Filter securityHeadersFilter() { 
     return new OncePerRequestFilter(){ 
      @Override 
      protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { 
       filterChain.doFilter(request, response); 

       response.setHeader("X-XSS-Protection", "1; mode=block"); 
       response.setHeader("X-Content-Type-Options", "nosniff"); 
      } 
     }; 
    } 

现在,当我点击请求并查看浏览器上的响应标题时,这两个标题不会出现。 我无处注册与urlPattern过滤器。这是问题还是我错过了其他一些事情? 如果urlpattern配置是问题然后plz告诉我如何以及在哪里配置它。

无论如何,我的最终目标是在Response头获得两个安全标题。

回答

0

这是相当使用Spring安全在Spring框架中简单地添加新的安全头部响应,我在这里列出所有最常用的安全头文件RS: -
代码是:
1)先写一个自定义新的过滤器

package com.mypackage; 
    import java.io.IOException; 

    import javax.servlet.FilterChain; 
    import javax.servlet.ServletException; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 

    import org.slf4j.Logger; 
    import org.slf4j.LoggerFactory; 
    import org.springframework.web.filter.OncePerRequestFilter; 

     public class AddHeaderFilter extends OncePerRequestFilter { 

      private static final Logger LOG = LoggerFactory.getLogger(AddHeaderFilter.class); 
      @Override 
      protected void doFilterInternal(HttpServletRequest request, 
              HttpServletResponse response, FilterChain filterChain)throws ServletException, IOException { 

        response.setHeader("X-XSS-Protection", "1; mode=block"); 
        response.setHeader("Strict-Transport-Security", "max-age=31536000; includeSubDomains"); 
        response.setHeader("X-Content-Type-Options", "nosniff"); 
        response.setHeader("Cache-control", "no-store, no-cache"); 
        response.setHeader("X-Frame-Options", "DENY"); 
        response.setHeader("Set-Cookie", "XSRF-TOKEN=NDKDdfdsfkldsfNd3SZAJfwLsTl5WUgOkE; Path=/; Secure;HttpOnly"); 
        filterChain.doFilter(request, response); 

        LOG.info("Exit: AddHeaderFilter"); 


      } 

     } 


2)现在配置此过滤器到你的web.xml文件。

<filter> 
     <filter-name>addHeaderFilter</filter-name> 
     <filter-class>com.mypackage.AddHeaderFilter</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>addHeaderFilter</filter-name> 
     <url-pattern>/api/*</url-pattern> 
    </filter-mapping> 


这就是全部。 现在打你的API并观看回应。你会在你的回复中得到这些标题。 :)

相关问题