2014-06-05 23 views
5

वसंत सुरक्षा और वसंत एमवीसी के कामकाजी हैलो विश्व उदाहरण को मानते हुए।सामग्री-सुरक्षा-नीति वसंत सुरक्षा

जब मैं wireshark साथ एक निशान ले मैं 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 

मैं अपने हेडर में जोड़ने के लिए चाहते हैं पर निम्नलिखित झंडे देखें: मुझे लगता है कि एक्स पता

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

फ़्रेम-विकल्प लगभग एक ही काम कर रहे हैं, लेकिन फिर भी यह मुझे बेहतर नींद देता है। अब मैं लगता है कि मैं अपने वसंत सुरक्षा विन्यास के कॉन्फ़िगर समारोह के तहत यह करने के लिए) की आवश्यकता होगी लेकिन मैं नहीं जानता कि कैसे वास्तव में, यानी मैं .headers लगता है (। Something.something (स्वयं)

@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(); 
    } 

उत्तर

11

@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'")) 
     // ... 
    } 
} 

ध्यान दें कि जैसे ही आप किसी भी हेडर कि शामिल किया जाना चाहिए निर्दिष्ट के रूप में, तो केवल उन हेडर हो जाएगा में शामिल हैं: सीधे शब्दों में इस तरह addHeaderWriter विधि का उपयोग करें।

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

आप spring security documentation का उल्लेख कर सकते हैं:

डिफ़ॉल्ट हेडर आप कर सकते हैं शामिल करने के लिए।

+0

काम करता है, क्रिस्टोफ़ धन्यवाद । एक बात जो मैंने नोट किया है वह यह है कि क्रोमियम/रेकोनक/ओपेरा पृष्ठ लोड होने पर सीएसएस प्रदर्शित करता है, लेकिन ".addHeaderWriter (नया स्टेटिक हैडरवाइटर (" एक्स-कंटेंट-सिक्योरिटी-पॉलिसी "," स्क्रिप्ट-src 'self' "))" सक्षम है। "StaticHeaderWriter" यानी "StaticHeadersWriter" विधि के नाम पर अनुपलब्ध "एस" को भी ध्यान दें। मैंने देखा है कि आपके द्वारा पोस्ट किए गए रेफरेंस दस्तावेज़ के साथ यह भी मामला है। – Tito

+0

ठीक है मैंने पाया कि यह फ़ायरफ़ॉक्स में क्यों काम नहीं कर रहा था। मुझे खरीदे गए हेडर "एक्स-कंटेंट-सिक्योरिटी-पॉलिक" और "कंटेंट-सिक्योरिटी-पॉलिसी" संक्रमण स्पष्टीकरण का उपयोग करने की आवश्यकता है https://developer.mozilla.org/en-US/docs/Web/Security/CSP/Using_Content_Security_Policy – Tito

1

जबकि StaticHeadersWriter काम करता है के साथ दृष्टिकोण, स्प्रिंग सुरक्षा के नवीनतम संस्करण में यह संभव है एक विशेष विधि का उपयोग करने के तरीके: जानकारी के लिए

headers() 
    .contentSecurityPolicy("script-src 'self'"); 

दस्तावेज़ देखें: एक आकर्षण की तरह https://docs.spring.io/spring-security/site/docs/4.2.x/reference/html/headers.html#headers-csp-configure