2009-11-30 7 views
6

सार्वजनिक रूप से सभी फ़ाइलों को एक बुरी चीज नहीं है?public_html फ़ोल्डर में CodeIgniter एप्लिकेशन फ़ाइलों को क्यों हैं?

निश्चित रूप से /system/application/config/database.php जैसी चीजें सार्वजनिक रूप से दिखाई नहीं देनी चाहिए!

+1

हाँ मैंने पहले से ही सीआई को देखा है। मैं सोच रहा था कि यह असुरक्षित कॉन्फ़िगरेशन डिफ़ॉल्ट क्यों था। ऐसा लगता है कि यह सीधे बॉक्स के बाहर उपयोग की आसानी के लिए है। # 2 PHP हमेशा प्रशासक त्रुटि के कारण पार्स नहीं किया जाता है (नीचे फ्रैंक किसान की टिप्पणी देखें) # 3 देखें # 2 – Matthew

उत्तर

26

कोडइग्निटर, एलिसलैब्स के डेवलपर्स ने आसानी से उपयोग के लिए ढांचे को स्थापित किया है। इसका मतलब है कि ढांचे को आज़माने की इच्छा रखने वाले लोगों को अपने सर्वर पर किसी भी अनुमति सेटिंग्स के साथ परेशान नहीं होना चाहिए।

बेशक एक उत्पादन सर्वर पर, आप बिल्कुल सही हैं, सार्वजनिक PHP फ़ोल्डर में अपनी PHP फ़ाइलों को डालना एक अच्छा विचार नहीं है।

अपने फ़ोल्डरों को व्यवस्थित करने के लिए एक बेहतर तरीका होगा:

  • जड़
    • code_igniter
      • application_folder
        • config
        • नियंत्रकों
        • मॉडल
        • ...
      • system_folder
    • public_html
      • सीएसएस
      • js
      • छवियों index.php .htaccess

केवल अन्य परिवर्तन यहां किए जाने के लिए पढ़ने के लिए index.php की लाइन 26 को बदलने के लिए होगा:

$system_folder = "../../code_igniter/system-folder"; 
+0

मैं कोडइग्निटर फ़ोल्डर से एप्लिकेशन फ़ोल्डर को खींचना भी पसंद करता हूं। मैं शायद ही कभी कोडइग्निटर के स्रोत को छूता हूं और यह मुझे घोंसले का एक स्तर बचाता है। – MiseryIndex

+0

इसका यह भी अर्थ है कि आप इस सेटअप के साथ अपनी निर्देशिका – Matthew

+2

में इसे दोहराने के बिना किसी अन्य ऐप के लिए कोड इग्निटर इंस्टॉल का पुन: उपयोग कर सकते हैं, आपको डिफ़ॉल्ट –

0

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

कहा जा रहा है कि, हालांकि, आपको शायद अपना संपूर्ण सिस्टम फ़ोल्डर वेब रूट के ऊपर स्थापित करना चाहिए।

+3

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

0

आप हमेशा सार्वजनिक निर्देशिका के बाहर सिस्टम निर्देशिका रख सकते हैं। फ्रंट कंट्रोलर (index.php) के अंदर पथ अपडेट करना न भूलें।

6

आप निम्नलिखित नियम जोड़ सकते हैं।htaccess फ़ाइल आगे से देखा जा रहा है प्रणाली और अनुप्रयोग निर्देशिका की रक्षा के लिए (एक 403 निषिद्ध त्रुटि भेजता है):

/application 
/system 
/public 
    index.php 

आप public/index.php इन दो सेटिंग में बदल सकते हैं और आप कर रहे हैं:

# Protect application and system files from being viewed 
RewriteRule ^(application|system) - [F,L] 
+0

[एफ, एल] वास्तव में क्या करता है? – Matthew

+1

एफ एक हेडर जोड़ता है (403 वर्जित) और एल बस संसाधित होने से किसी और नियम को रोकता है। –

1

इस संरचना के साथ किया

$application_folder = '../application'; 
$system_path = '../system'; 
1

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

<?php 
// $details = getimagesize($_GET["path"] . '/' . $_GET["image"]); 
$details = getimagesize($_GET["path"] . strip_tags($_GET["image"])); 
header ('Content-Type: ' . $details['mime']); 
readfile($_GET["path"] . strip_tags($_GET["image"])); 
exit; 
?> 
+0

इससे पहले कि हम प्रत्येक तत्व के माध्यम से चलकर $ _GET सरणी को sanitize – serdarsenay

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