2012-12-24 18 views
5

में स्थिर संसाधनों तक पहुंच कैसे सुरक्षित करें मैं वेब एप्लिकेशन के बाहर किसी फ़ोल्डर से छवियों की सेवा कर रहा हूं। मैंने सी: \ स्रोत \ चित्रों के अंदर छवियों को संग्रहीत किया। मैं वसंत के सर्वलेट संदर्भ फ़ाइल में एक स्थिर संसाधन के रूप में इस संसाधन के लिए कॉन्फ़िगर:वसंत

<resources location="file:///C:/source/Pictures/" mapping="/img_resources/**"/> 

मैं

<img src="<spring:url value='/img_resources/guinnes_choc_cake.jpg/'/>"></img> 

यह मेरे लिए अच्छी तरह से काम का उपयोग कर कि फ़ोल्डर में संग्रहीत छवियों को प्रदर्शित। हालांकि, मुझे सुरक्षा चिंताएं हैं। मैं अपने सर्वर में एक निर्देशिका को सार्वजनिक रूप से बेनकाब नहीं करना चाहता हूं। 1

क्या वसंत में इस फ़ोल्डर के आसपास सुरक्षा बनाने का कोई तरीका है?

+1

शायद आपको पिछले प्रश्नों के कुछ उत्तर स्वीकार करना चाहिए? – micha

+0

@ मिचा मुझे याद दिलाने के लिए धन्यवाद;) – zfranciscus

+0

"इस फ़ोल्डर के चारों ओर सुरक्षा बनाएं" - आपको किस तरह की "सुरक्षा" दिमाग में है? क्या अनुमति है और क्या नहीं है? –

उत्तर

7

आप स्प्रिंग सुरक्षा का उपयोग कर रहे हैं, तो आप अपने स्प्रिंग प्रसंग फ़ाइल (ओं) को कुछ इस तरह जोड़ सकते हैं:

<sec:intercept-url pattern="/img_resources/**" access="isAuthenticated()" /> 
+0

है जो शानदार लग रहा है। हालांकि क्या इसका मतलब यह है कि केवल उन्हीं उपयोगकर्ताओं को प्रमाणित किया गया है जो एक छवि देख सकते हैं? यदि ऐसा है, तो मैं बिना किसी चित्र वाले वेबसाइट के साथ समाप्त हो सकता हूं। मैं अभी भी जनता को छवियों को देखने देना चाहता हूं। – zfranciscus

+2

असल में प्रमाणीकृत() उपलब्ध अभिव्यक्तियों में से एक है, स्पष्ट रूप से आपके मामले में आपको "permitAll" का उपयोग करना होगा। यहां आप स्प्रिंग सिक्योरिटी द्वारा समर्थित सभी अभिव्यक्तियां पा सकते हैं: [अभिव्यक्ति-आधारित पहुंच नियंत्रण] (http://static.springsource.org/spring-security/site/docs/3.0.x/reference/el-access.html)। – izilotti

2

स्थिर संसाधनों के उपयोग को प्रतिबंधित करने के कोई विशेष कारण नहीं है।

यह देखते हुए कि निर्देशिका संरचना अच्छी तरह से परिभाषित किया गया है और फ़ाइल आदेश अर्थ है (यानी img_resources फ़ोल्डर केवल छवियां हैं), तो आपको फिल्टर श्रृंखला से होकर गुजरने वाली भूमि के ऊपर से बचने के लिए इस तरह के संसाधन, या पूरी तरह भी बाईपास फिल्टर तक पहुंचने की अनुमति चाहिए , जैसे:

<sec:intercept-url pattern="/img_resources" filters="none" /> 

Spring Security tutorial से:

हम पसंद करते हैं निश्चित संसाधनों स्प्रिंग 01 द्वारा कार्रवाई के लिए नहींसुरक्षा के फ़िल्टर बिल्कुल। इसे प्राप्त करने के लिए, आप एक अतिरिक्त <http> ब्लॉक जोड़ सकते हैं जो केवल एक विशिष्ट पैटर्न पर लागू होता है। मौजूदा ब्लॉक से पहले आना चाहिए, क्योंकि यह किसी विशिष्ट पैटर्न पर लागू होता है। यदि पैटर्न विशेषता प्रदान की जाती है, तो ब्लॉक किसी भी अनुरोध पर लागू होता है।