2012-04-10 11 views
1

Ist es möglich, ein Include zu bereinigen, bevor es ausgeführt wird, um sicherzustellen, dass es auf dem Server existiert?Sanitizing-Include-Datei, bevor sie mit einer Whitelist ausgeführt werden

Ich möchte vermeiden, dass Angreifer den Dateipfad kompromittieren, indem sie eine Art Whitelist verwenden, ist das möglich?

Mein umfassen sieht wie folgt aus:

require_once('../includes/front/header.php'); 
+0

Der ganze Punkt von "require" ist, dass die Ausführung stoppt, wenn sie nicht gefunden wird, weil die Datei benötigt wird. Wenn Sie das nicht wollen, benutzen Sie 'include' in Kombination mit' file_exists() 'oder' is_file() '. – jeroen

Antwort

3

Wie könnte der Pfad kompromittiert werden? (Es sei denn, Ihr require_once Benutzereingabe enthält - dies vermeiden!)

Sie könnten nur prüfen, ob die Datei file_exists mit existiert:

zB.

if(file_exists('../includes/front/header.php')) { 
    require_once('../includes/front/headers.php'); 
} 

Wenn Sie eine weiße Liste haben wollen, obwohl Sie nur ein array von erlaubt Pfad/Dateinamen erstellen könnte und dann benutzen Sie einfach in_array ihre Gültigkeit zu überprüfen.

+0

ok Sie sagen also, dass Sie keine Whitelist erstellen müssen, weil keine Benutzereingaben vorhanden sind? – user1278496

+0

Yup, das ist es so ziemlich :) – billyonecan

+0

ok könnten Sie einfach sagen, in welcher Situation würde require_once Benutzereingaben enthalten? : s – user1278496

1

Sollte mit der file_exists Funktion von PHP und ihrem Adressbuch möglich sein:

$allowed_files = array('../includes/front/header.php','../includes/front/footer.php'); 
$include_file = <string with file/path>; //EG '../includes/front/header.php' 

if (in_array($include_file,$allowed_files && file_exists($include_file)) { 
    require_once($include_file); 
} 

Wenn Ihr Weg in das PHP-Skript fest einprogrammiert und nicht vom Benutzer zu akzeptieren Eingabe für einen Dateinamen, dann sollten Sie Ihren eigenen Dateinamen/Pfad nicht bereinigen müssen

0

Sie könnten schreiben, dass Sie eigene gehören, die agai validieren könnten nst eine Liste von 'erlaubten' Pfaden.

, d. H. Das obige verwenden, aber es in eine Funktion einbinden.