कुछ फ़ाइलों तक वेब पहुंच से कैसे इनकार करें?


14

मुझे ऑपरेशन को थोड़ा अजीब करने की जरूरत है।

सबसे पहले, मैं डेबियन पर चलता हूं, apache2 (जो उपयोगकर्ता www-डेटा के रूप में 'रन' करता है)

तो, मेरे पास .txt ot .ini, या जो कुछ भी एक्सटेंशन है, साधारण टेक्स्ट फाइल नहीं है।

ये फ़ाइलें सबफ़ोल्डर में इस तरह की संरचना के साथ स्थित हैं:

www.example.com/folder1/car/foobar.txt www.example.com/folder1/cycle/foobar.txt www.example.com/folder1/fish/foobar.txt www.example.com/folder1/fruit/foobar ।टेक्स्ट

इसलिए, फ़ाइल नाम हमेशा समान होता है, 'पदानुक्रम' के लिए ditto, बस फ़ोल्डर का नाम बदलें: /folder-name-static/folder-name-dinamyc/file-name-static.txt

मुझे क्या करना चाहिए (मुझे लगता है) अपेक्षाकृत सरल है: मुझे सर्वर पर प्रोग्राम्स (अजगर, उदाहरण के लिए php) द्वारा उस फ़ाइल को पढ़ने में सक्षम होना चाहिए, लेकिन अगर मैं broswer द्वारा फ़ाइल सामग्री को पुनः प्राप्त करने का प्रयास करता हूं (urit www का अंकन)। example.com/folder1/car/foobar.txt, या cUrl, आदि के माध्यम से ..) मुझे एक निषिद्ध त्रुटि मिलनी चाहिए, या जो भी हो, लेकिन फ़ाइल का उपयोग नहीं करना चाहिए ।

यह भी अच्छा होगा कि एफ़टीपी के माध्यम से उन फ़ाइलों तक पहुँच भी 'छिपी' हो, या फिर भी डाउनलोड नहीं किया जा सकता है (कम से कम जो मैं एफ़टीपी रूट और उपयोगकर्ता डेटा के साथ उपयोग करता हूं)

मैं कैसे कर सकता हूँ?

मुझे यह ऑनलाइन मिला, फ़ाइल में डाल दिया जाए।

<Files File.txt>
 Order allow, deny
 Deny from all
</ Files>

यह काम करने लगता है, लेकिन केवल अगर फ़ाइल वेब रूट (www.example.com / myfile.txt) में है, और सबफ़ोल्डर में नहीं है। इसके अलावा, दूसरे स्तर (www.example.com/folder1/ फल /foobar.txt) में फ़ोल्डर डाइनैमिक रूप से बनाए जाएंगे। मैं समय-समय पर .htaccess फ़ाइल को बदलने से बचना चाहूंगा।

एक नियम बनाना संभव है, ऐसा कुछ, जो दिए गए नाम के साथ सभी फाइलों के लिए जाता है, जो कि * www.example.com / folder-name-static / * फ़ोल्डर-नाम-dinamyc / *** फ़ाइल-नाम पर है -static.txt *, जहां वे हिस्से समान हैं , बस ** एक परिवर्तन ?

संपादित करें :

जैसा कि डेव ड्रैगर ने कहा, मैं इसे वेब एक्सेस डायरेक्टरी के बाहर उन फाइल को रखने के लिए तैयार कर सकता हूं। लेकिन उन निर्देशिकाओं में दूसरों की फाइलें, चित्र, और मेरे उपयोगकर्ताओं द्वारा उपयोग किए जाने वाले सामान भी शामिल होंगे, इसलिए मैं बस एक डुप्लिकेट फ़ोल्डर सिस्टम नहीं करने का प्रयास करता हूं, जैसे:

/var/www/vhosts/example.com/httpdocs/folder1/car/[other folders and files here]
/var/www/vhosts/example.com/httpdocs/folder1/cycle/[other folders and files here]
/var/www/vhosts/example.com/httpdocs/folder1/fish/[other folders and files here]

//and, then for the 'secrets' files:

/folder1/data/car/foobar.txt
/folder1/data/cycle/foobar.txt
/folder1/data/fish/foobar.txt

जवाबों:


21

आप फ़ाइलें / FilesMatch और एक नियमित अभिव्यक्ति का उपयोग कर सकते हैं :

<Files ~ "\.txt$">
    Order allow,deny
    Deny from all
</Files>

यह कैसे संरक्षित है।

या 404 पर .txt की किसी भी पहुंच को पुनर्निर्देशित करें:

RedirectMatch 404 \.txt$

मैंने उस तरीके का उपयोग करने की कोशिश की, लेकिन ऐसा लगता है कि न ही उप-फ़ोल्डर्स में फ़ाइल पर काम करता है
स्ट्रै

मैंने अपने
रेगीक्स को

ok .. काम कर सकता है। लेकिन .. regexp RedirectMatch 404 \ myfilename.txt $ की तरह होना चाहिए, है ना? फाइलें एक ही नाम से आवंटित होंगी, लेकिन विभिन्न फ़ोल्डरों में। और यह समाधान एफ़टीपी विधि को प्रभावित नहीं करेगा, है ना?
स्ट्रेट

यह सही लगता है ...
rkthkr

हां, मैं इसकी पुष्टि करता हूं कि यह काम करता है ... लेकिन मेरा regexp RedirectMatch 404 \ myfilename.txt $ गलत होना चाहिए .. यह काम करता है यदि मैं RedirectMatch 404 \ .txt $ का उपयोग करता हूं, सभी .txt फ़ाइलों को अवरुद्ध करता हूं, लेकिन अगर मैं फ़ाइल नाम का उपयोग नहीं करता हूं। regexp में। कोई मदद? im regexp के साथ एक
जनक

1

हां, यह सब संभव है। हालाँकि, यदि आपके पास सर्वर पर प्रोग्राम हैं जिन्हें टेक्स्ट फ़ाइलों तक पहुंचने की आवश्यकता है, तो उन्हें वेब रूट से बाहर रहना चाहिए। उदाहरण के लिए, यदि आपकी वेब फाइलें ~ / public_html / में हैं, तो आपको उन्हें ~ / डेटा में संग्रहीत करना चाहिए। सार्वजनिक HTML फ़ोल्डर में उन्हें रखने का कोई कारण नहीं है।

वेब फ़ोल्डर से उन्हें हटाने के अलावा, सुनिश्चित करें कि यूनिक्स अनुमतियां उन पर सही तरीके से सेट हैं। स्क्रिप्ट के उपयोगकर्ता को पढ़ना (लिखना?) एक्सेस करना होगा लेकिन किसी और के पास यह एक्सेस होना आवश्यक नहीं है।

यदि आपको वेब एक्सेस फ़ोल्डर में इन फ़ाइलों को रखने की आवश्यकता है, तो ऐसे तरीके हैं जो आप mod_rewrite के माध्यम से पूछ रहे हैं। कई उदाहरणों के लिए फॉलो साइट देखें, जिनमें से एक बिल फिट होना चाहिए।

http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/


फ़ाइलों को अजगर या php के माध्यम से बनाया जाएगा, फिर, कभी फिर से संपादित नहीं किया जाएगा, बस पढ़ें।
14

0

फ़ाइल तक पहुंच से इनकार करने के लिए मानक यूनिक्स फ़ाइल अनुमतियों का उपयोग क्यों नहीं किया जाता है?

यूनिक्स फ़ाइल अनुमतियों के बारे में विकिपीडिया पर एक अच्छा स्पष्टीकरण है


मैं php, python, root यूजर को उन फाइलों को संभालने की अनुमति कैसे दे सकता हूं और ब्राउजर-ऐक्सेस नहीं?
स्ट्रन

0

उपनिर्देशिका में .htaccess फ़ाइल रखें और स्टेटमेंट में, AllowOverride All सेट करें


तो मैं हर 2 ° स्तर फ़ोल्डर के लिए .htaccess की आवश्यकता होगी! mmh .. एक समाधान हो सकता है .. 1 .htacces के साथ बेहतर होगा ..
Strae


0

आप सभी को पढ़ने के बाद, मैंने देखा कि .htaccess फ़ाइल मेरे लिए रास्ता हो सकती है: केवल उस फ़ोल्डर में फ़ाइलों को प्रभावित करें जहाँ वह है।

लेकिन मेरे फ़ोल्डर्स गतिशील रूप से उत्पन्न होते हैं। मुझे नहीं लगता कि .htaccess फ़ाइल को कॉपी करें या हर बार जब मैं एक नया फ़ोल्डर बनाऊं तो यह एक विश्वसनीय तरीका है।

जैसा कि डेव ने कहा, तार्किक तरीका वेब-सुलभ फ़ोल्डर के बाहर कॉन्फ़िगर पाठ फ़ाइलों को संग्रहीत करना चाहिए।

लेकिन हर फ़ोल्डर में मुझे अन्य फ़ाइलों, उदाहरणों के लिए छवियों को संग्रहीत करना होगा, जो कि वेब-सुलभ होना चाहिए ... और मुझे अभी भी नहीं लगता है कि फ़ोल्डर्स की संरचना को दोहराने, और वेब-रूट direvtory में, एक विश्वसनीय तरीका है । इसलिए, मुझे php अनुमत पथ में कॉन्फिग फ़ोल्डर को शामिल करने के लिए अपाचे कॉन्फ़िगरेशन को भी बदलना होगा। यह समस्या नहीं होनी चाहिए, वैसे भी।

इसलिए, अगर मेरे पास बेहतर नहीं है, तो मुझे कम से कम एक को चुनना होगा

मैं भविष्य में पछतावा नहीं होने की उम्मीद के लिए, कई .htaccess फ़ाइलों के समाधान का उपयोग करूंगा।

हर दूसरे समाधान की सराहना की है।


0

से आदेश प्रलेखन अनुभाग:

कीवर्ड केवल एक अल्पविराम द्वारा अलग किए जा सकते हैं; उनके बीच कोई व्हाट्सएप की अनुमति नहीं है।

तो निम्नलिखित गलत है:

<Files File.txt>
Order allow, deny
Deny from all
</ Files>

निम्नलिखित (अधिक) सही है

<Files "File.txt">
Order allow,deny
Deny from all
</Files>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.