Senden von Variablen für PHP-Dateisystemfunktionen mit Formularübermittlung

Ich versuche, einen sicheren Weg zu finden, um Folgendes zu tun:

Benutzer geben Wert in HTML-Formular ein.Formular wird gesendet.PHP verwendet den übergebenen Wert als Argument für die "scandir" -Funktion.

Meine Theorie ist die Einbindung von Logik in das PHP-Skript, die absolute Pfade verbietet und erfordert, dass der Verzeichnisname einen bestimmten Wert enthält.

Ich befürchte, dass ein Hacker mein Formular verwenden könnte, um seinen eigenen Wert einzureichen und auf vertrauliche Dateien zuzugreifen.

Dies ist für ein JQuery-Plugin. Ich möchte nicht, dass Benutzer die PHP-Datei ändern müssen.

Wie könnte der folgende Code gehackt werden?

<?php

$foo = $_POST["some_directory"];

//validate $foo

//make sure path to directory is relative
$foo_url_test  = parse_url($foo);
if (isset($foo_url_test['scheme']) || isset($foo_url_test['host'])) {
$foo = NULL;
}

//make sure the directory name contains 'bar123'
$foo_name_test = preg_split('_[\\\\/]_', $foo);
$foo_name_test = end($foo_name_test);
$foo_name_test = strpos($foo_name_test,'bar123');
if ($foo_name_test === false) {
$foo = NULL;
}

//make sure the path does not contain '..'
$foo_dot_dot_test = strpos($foo,'..');
if ($foo_dot_dot_test == TRUE || $foo_dot_dot_test === 0) {
$foo = NULL;
}

//get files
$files_array = scandir($foo);

?>

Antworten auf die Frage(3)

Ihre Antwort auf die Frage