2015-02-21 6 views
50

मैं अपने 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> टैग

उत्तर

75

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

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

यहाँ नीति

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

अधिक जानकारी के लिए here देखें।

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

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

+1

बहुत धन्यवाद! :) – Bravo

+0

इस 'http' और' हेडर 'टैग के लिए नेमस्पेस क्या है? के लिए vtorosyan –

+0

3 चियर्स http://www.springframework.org/schema/security –

41

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

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

का उपयोग अक्षम() एक विकल्प है लेकिन अगर यह एक ही सर्वर पर है, का उपयोग 'http.headers() frameOptions() sameOrigin();' –

30

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


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

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

Spring Security 4.0.2 की तरह नए संस्करणों के लिए: यदि आप उपयोग कर सकते हैं

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

कैसे स्प्रिंग 3.2.12 में यह कॉन्फ़िगर करने के लिए? –

+1

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

12

एक्सएमएल विन्यास का उपयोग कर

<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> 
+1

एक आकर्षण की तरह काम करता है। सिर्फ एक सुधार, समापन टैग भी 'सुरक्षा: फ्रेम-विकल्प' होना चाहिए। –

+0

अच्छी पकड़। मेरा जवाब अपडेट किया गया। –

3

यदि आप स्प्रिंग बूट का उपयोग कर रहे हैं, तो स्प्रिंग सिक्योरिटी डिफॉल्ट हेडर को अक्षम करने का सबसे आसान तरीका 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 पर एक नज़र डालें।

+0

धन्यवाद, यह काम है! –

4

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

@EnableWebSecurity 
@Configuration 
public class WebSecurityConfig extends 
    WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
    http 
     .headers().disable() 
     ...; 
    } 
} 
संबंधित मुद्दे