Ich benutze die "include" Funktion (e.x. "include 'header2.php'" oder "include 'class.users.php'") um die Kopf- oder Sitzungsklasse in meiner Website hinzuzufügen. Ich erinnere mich nicht wirklich, wo, aber ich habe gehört, dass Hacker das "Include" -Ding irgendwie missbrauchen, die gefälschte Include-Seite schicken oder so ähnlich. Also im Grunde würde ich gerne wissen, was mit dieser "include" -Funktion ist, wie kann ich sie schützen, wie missbrauche ich sie und ob es bessere Lösungen für das gibt, wonach ich suche.
Vielen Dank im Voraus.
Alles hängt davon ab, wie Sie es implementieren. Wenn Sie den Pfad speziell festlegen, ist er sicher. Der Angriff kann auftreten, wenn Sie zulassen, dass Benutzereingaben den Dateipfad ohne Bereinigung oder Überprüfung ermitteln.
Unsicher (Directory Traversal)
%Vor%Unsicher ( URL fopen - Wenn aktiviert)
%Vor%Unsicher
%Vor%Teilweise unsicher (* .php-Dateien sind anfällig)
%Vor%Sicher (Obwohl nicht sicher, warum jemand das tun würde.)
%Vor%Sicher
%Vor%Das größte Problem mit Includes ist die Änderung der Dateinamenserweiterung von PHP zu etwas, das nicht automatisch vom Webserver ausgeführt wird. Zum Beispiel - library.inc oder config.inc. Wenn Sie diese Dateien mit einem Webbrowser aufrufen, wird der Code angezeigt, anstatt ihn auszuführen - und alle Passwörter oder nutzbaren Hinweise werden angezeigt.
Vergleichen Sie config.php , das möglicherweise ein Passwort mit config.inc enthält. Das Hochziehen von config.inc würde in den meisten Fällen zeigen, wie das Datenbank-Passwort war.
Es gibt Programmierer, die .inc-Erweiterungen für Bibliotheken verwenden. Die Voraussetzung ist, dass sie sich nicht in einem Verzeichnis befinden, auf das ein Webserver zugreifen kann. Allerdings können weniger paranoide Programmierer diese Datei in ein praktisches Web-Verzeichnis ausgeben.
Stellen Sie andernfalls sicher, dass Sie keine von einer Abfragezeichenfolge übermittelte Datei einschließen. Bsp .: include( $_GET['menu_file'] )
& lt; - das ist sehr falsch.
Einschließen kann missbraucht werden, wenn Sie so etwas tun:
%Vor%und rufen Sie dann die URL:
myscript.php?page=index.php
Angreifer können dann index.php
für hxxp://hackerz.ru/install_stuff.php
ersetzen und Ihr Server wird es gerne ausführen.
include
selbst ist vollkommen sicher. Stellen Sie sicher, dass Sie Ihre Eingabe immer validieren / entziehen.
Am besten stellen Sie sicher, dass die Seite, die Sie einfügen möchten, zuerst existiert. Die wahren Sicherheitslücken treten auf, wenn Ihre Include-Seite aus einer Art Benutzereingabe wie einer URL-Variablen verarbeitet wird. ?include=page.php
Solange Sie vorsichtig sind, sollten Sie in Ordnung sein.
Include ist sicher, wenn Sie nicht:
www.someoneelsesssite.com/something.php
2 und 3 haben technisch die Einschränkung, dass wenn Sie www.mysite.com/bad.php?path=oops/here/is/your/passwords/file
oder .
oder auf Windows /
verbieten, es Ihnen wahrscheinlich gut geht. Aber wenn Sie nicht wissen, warum, wissen Sie nicht genug darüber, um es zu riskieren. Selbst wenn Sie denken, dass die Datenbank schreibgeschützt oder anderweitig sicher ist, ist es ratsam, dies nicht zu tun, es sei denn, Sie müssen dies wirklich tun, was fast nie der Fall ist.
Wie pp19dd's Antwort darauf hinweist. Es ist auch wichtig, dass Sie Ihre Includes mit der Erweiterung .php benennen. Wenn Sie Apache (oder den von Ihnen verwendeten Webserver) so eingerichtet haben, dass ein anderer Dateityp als PHP analysiert wird, ist das auch sicher. Aber wenn Sie nicht sicher sind, verwenden Sie ausschließlich .php.