2009-11-30 5 views
6

Haben nicht alle Dateien in der Öffentlichkeit eine schlechte Sache?Warum befinden sich CodeIgniter-Anwendungsdateien im Ordner public_html?

Sicher Dinge wie /system/application/config/database.php sollte nicht öffentlich sichtbar sein!

+1

Ja, ich habe CI schon angeschaut. Ich habe mich gefragt, warum diese unsichere Konfiguration die Standardeinstellung war. Scheint so, als ob es nur für die Benutzerfreundlichkeit direkt aus der Box ist. # 2 PHP wird nicht immer geparst, möglicherweise aufgrund eines Administratorfehlers (siehe Frank Farmers Kommentar unten) # 3 Siehe # 2 – Matthew

Antwort

26

Die Entwickler von CodeIgniter, EllisLabs, haben das Framework auf diese Weise für Benutzerfreundlichkeit eingerichtet. Es bedeutet, dass Leute, die das Framework ausprobieren wollen, nicht mit irgendwelchen Berechtigungseinstellungen auf ihrem Server herumspielen müssen.

Natürlich auf einem Produktionsserver, Sie haben absolut Recht, setzen Sie Ihre PHP-Dateien in den öffentlichen HTML-Ordner ist keine gute Idee.

Eine bessere Möglichkeit, Ihre Ordner wäre zu organisieren:

  • Wurzel
    • code_igniter
      • application_folder
        • Config
        • Controller
        • Modelle
        • ...
      • system_folder
    • public_html
      • css
      • js
      • Bilder index.php .htaccess

Die einzige andere Änderung hier gemacht werden würde Linie 26 von index.php ändern zu lesen:

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

Ich ziehe auch gerne den Anwendungsordner aus dem CodeIgniter-Ordner heraus. Ich berühre CodeIgniters Quelle nur selten und das spart mir eine Verschachtelungsebene. – MiseryIndex

+0

es bedeutet auch, Sie können die Code-Zünder-Installation für eine andere Anwendung wiederverwenden, ohne es in einem eigenen Verzeichnis zu replizieren – Matthew

+2

mit diesem Setup müssen Sie auch $ application_folder in index.php von der Standardeinstellung ändern –

0

Zugriff auf die Dateien in/System/von einem Browser wird nicht enthüllen Sie alle sensiblen Informationen, weil das PHP analysiert wird und nichts aus diesen Dateien ausgegeben wird (CI-Systemdateien können sogar prüfen, ob eine Variable definiert wurde, die anzeigt, dass auf die Datei nicht direkt zugegriffen wurde).

Davon abgesehen, sollten Sie jedoch wahrscheinlich Ihren gesamten Systemordner über Web-Root installieren.

+3

Leider wird manchmal PHP nicht geparst - In der Regel aufgrund eines Administratorfehlers. So ist die Facebook-Quelle vor einiger Zeit durchgesickert. Deshalb sollten Sie zunächst alles von den weltweit zugänglichen Wegen fernhalten. Es ist der Unterschied, ob Sie Ihre Wertsachen in Ihrem Handschuhfach verstauen und sie nicht im Auto lassen. –

0

Sie können das Systemverzeichnis immer außerhalb des öffentlichen Verzeichnisses platzieren. Vergessen Sie nicht, Pfade innerhalb des Frontcontrollers (index.php) zu aktualisieren.

6

Sie können die folgende Regel hinzufügen..htaccess-Datei, das System weiter und Anwendungsverzeichnisse zu schützen betrachtet wird (sendet eine 403 Forbidden Fehler):

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

Was macht [F, L] hier eigentlich? – Matthew

+1

F fügt einen Header hinzu (403 verboten) und L verhindert einfach, dass weitere Regeln verarbeitet werden. –

1

Mit dieser Struktur:

/application 
/system 
/public 
    index.php 

Sie können in public/index.php diesen beiden Einstellungen ändern und Sie sind

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

Jon Winstanley Antwort ist perfekt, vergessen Sie auch nicht das Hochladen von Dateien Ordner zu sichern, wenn Sie o haben ne. Ich tat das, indem ich es auch außerhalb der öffentlichen Wurzel bewegte und die Bilder mit dem folgenden Code erhielt:

+0

Natürlich vorher reinigen wir $ _GET Array durch jedes Element durchlaufen – serdarsenay

Verwandte Themen