2014-06-05 19 views
5

przy założeniu działającego witającego świata przykładu wiosennego bezpieczeństwa i sprężynowego prądu mvc.Content-Security-Policy Spring Security

kiedy biorę śladu z Wireshark widzę następujące flagi na żądanie http

X-Content-Type-Options: nosniff 
X-XSS-Protection: 1; mode=block 
Cache-Control: no-cache, no-store, max-age=0, must-revalidate 
Pragma: no-cache 
Expires: 0 
Strict-Transport-Security: max-age=31536000 ; includeSubDomains 
X-Frame-Options: DENY 
Set-Cookie: JSESSIONID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX; Path=/; Secure; HttpOnly 

chciałbym dodać to do moich nagłówków:

Content-Security-Policy: script-src 'self' 

wiem, że X- Frame-Options robi prawie to samo, ale wciąż sprawia, że ​​lepiej śpię. Teraz myślę, że musiałaby to zrobić za pomocą funkcji Konfiguracja mojego konfiguracji zabezpieczeń wiosny jednak nie wiem jak dokładnie, tzn przypuszczam .headers(). Something.something (self)

@Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
//   .csrf().disable() 
//   .headers().disable() 
      .authorizeRequests() 
       .antMatchers( "/register", 
           "/static/**", 
           "/h2/**", 
           "/resources/**", 
          "/resources/static/css/**", 
           "/resources/static/img/**" , 
           "/resources/static/js/**", 
           "/resources/static/pdf/**"        
           ).permitAll() 
       .anyRequest().authenticated() 
       .and() 
      .formLogin() 
       .loginPage("/login") 
       .permitAll() 
       .and() 
      .logout() 
       .permitAll(); 
    } 

Odpowiedz

11

Wystarczy użyć metody addHeaderWriter takiego:

@EnableWebSecurity 
@Configuration 
public class WebSecurityConfig extends 
    WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
    http 
     // ... 
     .headers() 
     .addHeaderWriter(new StaticHeadersWriter("X-Content-Security-Policy","script-src 'self'")) 
     // ... 
    } 
} 

Zauważ, że tak szybko, jak to określił żadnych nagłówków, które powinny zostać uwzględnione, to tylko te nagłówki będą obejmować.

użyć domyślnych nagłówków można zrobić:

http 
    .headers() 
    .contentTypeOptions() 
    .xssProtection() 
    .cacheControl() 
    .httpStrictTransportSecurity() 
    .frameOptions() 
    .addHeaderWriter(new StaticHeadersWriter("X-Content-Security-Policy","script-src 'self'")) 
    // ... 

Można odwołać się do spring security documentation.

+0

działa jak czar, Christophe dziękuję . Jedną z rzeczy, które zauważyłem jest to, że chrome/rekonq/opera wyświetlają css po wczytaniu strony, ale firefox nie wyświetla css, gdy ".addHeaderWriter (nowy StaticHeaderWriter (" X-Content-Security-Policy "," script-src 'self' "))" jest włączony. Zwróć też uwagę na brakujące "s" w nazwie metody "StaticHeaderWriter", tj. "StaticHeadersWriter". Zauważyłem, że tak samo jest z publikowaną dokumentacją referecji. – Tito

+0

ok znalazłem, dlaczego to nie działało w Firefoksie. Potrzebowałem użyć nagłówków kupowanych "X-Content-Security-Polic" i "Content-Security-Policy" tutaj: https://developer.mozilla.org/en-US/docs/Web/Security/CSP/Using_Content_Security_Policy – Tito

Powiązane problemy