2010-06-14 7 views
9

Ich habe Empfehlungen zum Speichern einiger oder aller PHP Include-Dateien an einem anderen Ort als im Stammverzeichnis des Web-Dokuments (Benutzername/public_html in meinem Fall) aus dem Grund des Schutzes von PHP-Dateien mit sensiblen gesehen Informationen (wie Datenbank-Verbindung und Login-Informationen) für den Fall, dass der Webserver schluckt und aufhört, PHP-Dateien zu schützen, und sie für Außenstehende "sichtbar" werden, die wissen, wo sie suchen müssen.Speichern von Skript-Dateien außerhalb Web-Root

Es scheint etwas paranoid zu mir, aber ich rate, dass Leute auf diesem vorher schlecht gebrannt haben, also bin ich bereit, mitzukommen. Der Vorschlag besteht normalerweise darin, die Include-Dateien in einer Datei wie "../include_files/" zu speichern, so dass sie nicht direkt in der Dokumentenwurzel und nicht direkt für Außenstehende über den Webserver zugänglich ist.

Meine Frage ist das: Gibt es einen signifikanten Unterschied in der Sicherheit zwischen diesem Weg und nur Ihre 'include_files' Verzeichnis unter dem Dokumentenstamm und kleben eine .htaccess-Datei dort (mit den entsprechenden Einträgen)? Würde eine .htaccess-Datei in '../include_files/' eine signifikante Verbesserung dort machen?

TIA,

Monte

Antwort

13

Durch die Verwendung von .htaccess wird ein zusätzlicher Aufwand verursacht, da Apache über ein anderes Element verfügt, nach dem gesucht und verarbeitet werden muss.

Dateien aus Web-Root herauszuhalten ist nicht paranoid, es ist eine gute Übung. Was passiert, wenn jemand direkt auf eine der "Include" -Dateien zugreift und Fehler anzeigt, weil alle erforderlichen Dateien nicht geladen wurden?

Jede Datei muss über eigene Sicherheitsprüfungen verfügen, um sicherzustellen, dass sie in der erwarteten Umgebung ausgeführt wird. Jede ausführbare Datei in einem Web-zugänglichen Bereich ist eine potentielle Sicherheitslücke.

+0

+1 für den Hinweis auf die Leistungseinbußen von .htaccess (wenn Sie AllowOverride None angeben, sucht Apache nicht einmal nach der Datei). Vereinbaren Sie Ihre anderen Punkte mit Bezug auf die Dateien aus dem Dokumentenstamm zu halten; Es dauert ein paar Minuten (besonders mit einem __autoload/spl_autoload_register), also warum nicht? –

+0

das Problem ist: Sie können das nicht in vielen/meisten Shared Hosting. Nein? – docesam

+0

Meiner Erfahrung nach teilen freigegebene Hosts ein Verzeichnis mit einem www-Verzeichnis, das als öffentlich festgelegt ist. –

4

Es hängt wirklich davon ab, was Sie in Ihrem include_files haben. Das Wichtigste ist, dass Sie alle Anmeldeinformationen außerhalb des Dokumentstammverzeichnisses (Datenbank-Logins usw.) eingeben. Alles andere ist wirklich zweitrangig und spielt keine Rolle.

Wenn Sie jemand nicht wollen, den Quellcode dann versuchen zu stehlen Zend Konventionen zu folgen:

application 
library 
public 

DocumentRoot Punkte public und enthält nur Mediendateien, js/CSS-Dateien. HTML/Ansichten, db Logik, Conf/Anmeldeinformationen sind in application. Third-Party-Bibliotheken sind in library.

0

Wenn Sie nur eine .htaccess-Datei in den Ordner stecken, können Sie theoretisch die .php-Dateien direkt aufrufen.

Sie aus dem Serverstamm entfernen; jedoch verhindert sie Zugriff auf jemals von jemandem, der Ihre Website durchsucht.

Verwandte Themen