स्प्रिंग सुरक्षा में 'X- फ्रेम-ऑप्शंस' रिस्पांस हेडर को कैसे निष्क्रिय करें?


89

मेरे पास मेरी jsp पर CKeditor है और जब भी मैं कुछ अपलोड करता हूं, तो निम्न त्रुटि सामने आती है:

 Refused to display 'http://localhost:8080/xxx/xxx/upload-image?CKEditor=text&CKEditorFuncNum=1&langCode=ru' in a frame because it set 'X-Frame-Options' to 'DENY'.

मैंने स्प्रिंग सिक्योरिटी को हटाने की कोशिश की है और सब कुछ एक आकर्षण की तरह काम करता है। मैं इसे वसंत सुरक्षा xml फ़ाइल में कैसे अक्षम कर सकता हूं? मुझे <http>टैग के बीच क्या लिखना चाहिए


1
नीचे दिए गए उत्तरों में से कोई भी पता नहीं है कि क्या नियंत्रक विधि स्तर पर SAMEORIGIN या ALLOW लागू करना संभव है - किसी को पता है?
काला

जवाबों:


110

डिफ़ॉल्ट रूप X-Frame-Optionsसे, क्लिकजैकिंग हमलों को रोकने के लिए, अस्वीकार करने के लिए सेट किया गया है । इसे ओवरराइड करने के लिए, आप अपने स्प्रिंग सुरक्षा कॉन्फिगर में निम्नलिखित जोड़ सकते हैं

<http>    
    <headers>
        <frame-options policy="SAMEORIGIN"/>
    </headers>
</http>

यहां पॉलिसी के विकल्प उपलब्ध हैं

  • DENY - एक डिफ़ॉल्ट मान है। इसके साथ पृष्ठ को फ़्रेम में प्रदर्शित नहीं किया जा सकता है, भले ही ऐसा करने का प्रयास करने वाली साइट हो।
  • SAMEORIGIN - मुझे लगता है कि यह वही है जो आप खोज रहे हैं, ताकि पृष्ठ उसी पृष्ठ पर उसी फ्रेम में प्रदर्शित हो सके (और हो सके)
  • ALLOW-FROM - आपको एक मूल निर्दिष्ट करने की अनुमति देता है, जहां पृष्ठ को एक फ्रेम में प्रदर्शित किया जा सकता है।

अधिक जानकारी के लिए यहां देखें

और यहां यह जांचने के लिए कि आप XML या जावा कॉन्फ़िगरेशन का उपयोग करके हेडर को कैसे कॉन्फ़िगर कर सकते हैं।

ध्यान दें, आपको आवश्यकताओं के strategyआधार पर उपयुक्त निर्दिष्ट करने की भी आवश्यकता हो सकती है ।


इस httpऔर headersटैग के लिए नाम स्थान क्या है ?
पसुपति राजमनिकम

4
क्या नियंत्रक विधि के स्तर के रूप में इसे लागू करना संभव है?
mad_fox

3
यदि आपको इसे WebSecurityConfigurerAdapter की कॉन्फ़िगर विधि में कॉन्फ़िगर करने की आवश्यकता है, तो निम्न कोड लिखें:http.headers().frameOptions().sameOrigin();
russellhoff

@vtor मैं 3.1 वसंत का उपयोग करता हूं और यह समर्थित नहीं है, कोई भी वैकल्पिक हल जो आप सुझा सकते हैं?
वसंत

@Spring docs.spring.io/spring-security/site/docs/current/reference/html/… यह समर्थित है। क्या आप कृपया साझा कर सकते हैं कि आपने क्या प्रयास किया है और क्या काम नहीं किया है?
vtor

102

यदि आप XML कॉन्फ़िगरेशन के बजाय जावा कॉन्फिगर का उपयोग कर रहे हैं, तो इसे अपनी WebSecurityConfigurerAdapter.configure(HttpSecurity http)विधि में रखें:

http.headers().frameOptions().disable();

34
डिसेबल () का उपयोग करना एक विकल्प है लेकिन यदि यह उसी सर्वर पर है, तो उपयोग करेंhttp.headers().frameOptions().sameOrigin();
इयान न्यूलैंड

59

सबसे अधिक संभावना है कि आप इस हैडर को पूरी तरह से निष्क्रिय नहीं करना चाहते, लेकिन उपयोग करें SAMEORIGIN। यदि आप जावा कन्फिग्स ( Spring Boot) का उपयोग कर रहे हैं और एक्स-फ्रेम-ऑप्शंस को अनुमति देना चाहते हैं: SAMEORIGINतो आपको निम्नलिखित का उपयोग करने की आवश्यकता होगी।


पुराने स्प्रिंग सुरक्षा संस्करणों के लिए:

http
   .headers()
       .addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN))

वसंत सुरक्षा 4.0.2 जैसे नए संस्करणों के लिए :

http
   .headers()
      .frameOptions()
         .sameOrigin();

स्प्रिंग 3.2.12 में इसे कैसे कॉन्फ़िगर करें?
पसुपति राजमनिकम

1
3.X से 4.X पर माइग्रेट करना और इसमें भाग जाना क्योंकि यह केवल पहले उदाहरण के आधार पर संलग्न था। धन्यवाद।
स्टीव

18

यदि XML कॉन्फ़िगरेशन का उपयोग कर आप उपयोग कर सकते हैं

<beans xmlns="http://www.springframework.org/schema/beans" 
       xmlns:security="http://www.springframework.org/schema/security"> 
<security:http>
    <security:headers>
         <security:frame-options disabled="true"></security:frame-options>
    </security:headers>
</security:http>
</beans>

11

यदि आप स्प्रिंग सुरक्षा के जावा कॉन्फ़िगरेशन का उपयोग कर रहे हैं, तो डिफ़ॉल्ट रूप से सभी डिफ़ॉल्ट सुरक्षा हेडर जोड़े जाते हैं। नीचे जावा कॉन्फ़िगरेशन का उपयोग करके उन्हें अक्षम किया जा सकता है:

@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends
   WebSecurityConfigurerAdapter {

  @Override
  protected void configure(HttpSecurity http) throws Exception {
    http
      .headers().disable()
      ...;
  }
}

9

यदि आप स्प्रिंग बूट का उपयोग कर रहे हैं, तो स्प्रिंग सुरक्षा डिफ़ॉल्ट हेडर को अक्षम करने का सबसे सरल तरीका security.headers.*गुणों का उपयोग करना है। विशेष रूप से, यदि आप X-Frame-Optionsडिफ़ॉल्ट शीर्ष लेख को निष्क्रिय करना चाहते हैं, तो बस निम्नलिखित को अपने साथ जोड़ें application.properties:

security.headers.frame=false

वहाँ भी है security.headers.cache, security.headers.content-type, security.headers.hstsऔर security.headers.xssगुण है कि आप उपयोग कर सकते हैं। अधिक जानकारी के लिए, एक नज़र डालें SecurityProperties


5
स्प्रिंग बूट 2.x में यह विधि पदावनत है। "सुरक्षा ऑटो-कॉन्फ़िगरेशन अब अनुकूलन योग्य नहीं है। इसके बजाय अपनी खुद की WebSecurityConfigurer बीन प्रदान करें।"
मर्किनपार्निक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.