2010-04-11 6 views
9

मान लीजिए कि मेरे पास एक छवि अपलोडर स्क्रिप्ट है, मैं अपलोड निर्देशिका को PHP या यहां तक ​​कि एचटीएमएल को निष्पादित करने से रोकना चाहता हूं, केवल इसे सादा पाठ के रूप में दिखाकर, मैंने कई वेबसाइटों में यह चाल देखी है लेकिन मुझे नहीं पता कि वे कैसे करते हैं यह।किसी विशिष्ट निर्देशिका को PHP, HTML, और जावास्क्रिप्ट भाषाओं को चलाने से कैसे रोकें?

संक्षेप में, अगर मैं उस निर्देशिका में evil.php अपलोड करता हूं, और मैं इसे एक्सेस करने का प्रयास करता हूं तो मुझे केवल एक सादा पाठ स्रोत दिखाई देगा, कोई HTML या php निष्पादित नहीं किया जाएगा। (लेकिन मैं अभी भी छवियों को सामान्य रूप से दिखाना चाहता हूं)

मुझे पता है कि मैं header("content-type:text/plain"); द्वारा ऐसा कर सकता हूं लेकिन यह उपयोगी नहीं होगा, क्योंकि मैं चाहता हूं कि content-type:text/plain स्वचालित रूप से आउटपुट की गई प्रत्येक चीज़ के लिए सर्वर द्वारा सेट करना है छवियों को छोड़कर अपलोड निर्देशिका से।

नोट: मैं PHP 5.3.2/सेंट ओएस और नवीनतम सीपीनल चला रहा हूं।

Options -Indexes 
Options -ExecCGI 
AddHandler cgi-script .php .php3 .php4 .phtml .pl .py .jsp .asp .htm .shtml .sh .cgi 

.htaccess फ़ाइल से समस्या है अपने अपलोड करता है, तो:

धन्यवाद

+0

क्या यह मानना ​​सुरक्षित है कि आप अपाचे का उपयोग अपने HTTP सर्वर के रूप में कर रहे हैं? चूंकि सभी समाधान अब तक मानते हैं कि – Gareth

+0

जावास्क्रिप्ट केवल तब तक निष्पादित होगा जब HTML फ़ाइल से कहा जाता है, जहां तक ​​मुझे पता है। अपने ब्राउज़र से जेएस फ़ाइल लिंक पर क्लिक करने का प्रयास करें, और यह सादे टेक्स्ट को खींचता है। कुछ ब्राउज़र फ़ाइल डाउनलोड करने का प्रयास कर सकते हैं, इसलिए उस प्रकार को टेक्स्ट/सादे को उस खाते में सेट करना सबसे अच्छा है, लेकिन किसी के द्वारा स्वयं को जेएस अपलोड करने और किसी अन्य उपयोगकर्ता को चोट पहुंचाने का कोई वास्तविक खतरा नहीं है। (फिर भी, किसी भी तरह से बेअसर करने के लिए अच्छी कॉल, लेकिन चूंकि आपने विशेष रूप से जेएस का उल्लेख किया है ...) – Anthony

+0

@ गैरेथ, अगर वे सेंटोस से कुछ और चला रहे थे तो मैं बहुत चौंक गया। क्या लिनक्स के लिए कोई अन्य मुख्यधारा HTTP सर्वर है? – Anthony

उत्तर

2

कम से कम, आप अपलोड निर्देशिका के लिए अपनी .htacces फ़ाइल में निम्नलिखित डाल करने के लिए चाहता हूँ अपलोड को अवरुद्ध नहीं करता है, आपका। htaccess ओवरराइट किया जा सकता है। एक वैकल्पिक समाधान अपाचे निर्देश (यदि आप अपाचे का उपयोग कर रहे हैं) का उपयोग कर रहे हैं, तो Disable PHP in directory (including all sub-directories) with .htaccess

+0

है, आप इसे केवल एक विशिष्ट निर्देशिका के लिए सेट करेंगे। – VolkerK

2

अपलोड निर्देशिका में .htaccess डालें।

AddType 'text/plain' .php .html 

या

ForceType 'text/plain' 
#... 
0

आप एक छवि अपलोड करने वाले के बारे में बात कर रहे हैं के बाद से, आप plain/text के रूप में छवियों को प्रदर्शित नहीं करना चाहते। आप दुर्भावनापूर्ण फ़ाइलों से छवियों को कैसे अलग करेंगे? उस कार्य के दौरान, केवल विशेष फ़ाइल को सहेजने से रोकें।

+0

बलुससी, मैं केवल गैर-छवियों को सादा/पाठ के रूप में हेडर करने के लिए गया था। धन्यवाद – Emily

2

कई विकल्पों को चालू करने के लिए "disable script execution for directory" के लिए Google खोज करें। यह एक मेरी पसंदीदा है:

AddType text/plain .html .htm .shtml .php .php3 .phtml .phtm .pl .py .cgi .js 

केवल नकारात्मक पक्ष यह है कि आप स्पष्ट रूप एक्सटेंशन नाम चलाने के लिए नहीं है कि है, लेकिन यह वाइल्ड कार्ड किसी प्रकार का उपयोग करने के लिए (सिर्फ एक कूबड़) संभव हो सकता है, ताकि सभी फ़ाइल एक्सटेंशन को सादे पाठ माना जाता है, और फिर मैन्युअल रूप से अपने मानक छवि एक्सटेंशन के लिए माइम प्रकार जोड़ें।

संबंधित मुद्दे