PHP - Ist die "include" -Funktion sicher?

7

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.

    
user1327735 13.04.2012, 21:07
quelle

7 Antworten

13

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%     
Lawrence Cherone 13.04.2012, 21:15
quelle
3

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.

    
pp19dd 13.04.2012 21:13
quelle
2

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.

    
Halcyon 13.04.2012 21:12
quelle
2

Alles was auf der Serverseite ist (vorausgesetzt, Ihr Server ist nicht kompromittiert) ist sicher. Tun Sie dies:

%Vor%

ist unsicher.

%Vor%

ist sicher.

    
Blake 13.04.2012 21:13
quelle
1

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.

%Vor%     
mseancole 13.04.2012 21:12
quelle
1

Include ist sicher, wenn Sie nicht:

  1. Enthalten Sie eine Remote-Datei wie www.someoneelsesssite.com/something.php
  2. Fügen Sie eine Datei aus einem Pfad ein, der vom Client stammt. %Code%
  3. Fügen Sie eine Datei aus einer anderen möglicherweise beschädigten Quelle wie einer Datenbank ein.

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.

    
DampeS8N 13.04.2012 21:12
quelle
-1

Ich benutze diese Methode.

%Vor%     
husnixs 02.07.2015 17:48
quelle

Tags und Links