Mein Client fragte mich, eine Website zu machen, wo ein Benutzer einen Pfad auf der Maschine eingeben kann, sollte PHP den Pfad scannen und laden Sie alle Mediendateien im Verzeichnis und Unterverzeichnissen. Der Benutzer kann außerhalb des Stammverzeichnisses beliebige Pfade, Desktops oder externe Laufwerke eingeben. Das ist, was der Kunde will und er läuft unter Linux.Zugriff auf Dateien außerhalb der root Regie
ich ihm sagte, PHP kann nicht auf Dateien zugreifen außerhalb der Wurzel, sagte er ja es kann, er sagte, ich einen Proxy-Server verwenden sollte und er schickte mir dieses Skript
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<?PHP
session_start();
function getFileList($dir)
{
// array to hold return value
$retval = array();
// add trailing slash if missing
if(substr($dir, -1) != "/") $dir .= "/";
// open pointer to directory and read list of files
$d = @dir($dir) or die("getFileList: Failed opening directory $dir for reading");
while(false !== ($entry = $d->read())) {
// skip hidden files
if($entry[0] == ".") continue;
if(is_dir("$dir$entry")) {
$retval[] = array(
"name" => "$entry/"
);
} elseif(is_readable("$dir$entry")) {
$retval[] = array(
"name" => "$entry"
);
}
}
$d->close();
return $retval;
}
$dirlist = getFileList("F:\uni\M2\Thesis\hmayed\ali\songs wav");
// output file list in HTML TABLE format
echo "<table border=\"1\">\n";
echo "<thead>\n";
echo "<tr><th>Name</th></tr>\n";
echo "</thead>\n";
echo "<tbody>\n";
foreach($dirlist as $file) {
echo "<form action=\"MusicP.php\" Method = \"POST\" \">\n";
echo "<input value =\" F:\\uni\\M2\\Thesis\\hmayed\\ali\\songs wav\\{$file['name']}\" type = \"submit\" name= \"submit\" id=\"{$file['name']}\">\n";
echo "</tr>\n";
}
echo "</form>\n";
echo "</table>\n\n";
?>
<audio src = "File:///F:\uni\M2\Thesis\songs\1.mp3" type= "audio/mp3" controls>
Your browser does not support the audio element.
</audio>
<body>
</body>
</html>
meine Fragen so:
- Funktioniert dieses Skript oder diese Art von Skripten? Ist das Projekt machbar?
- Und was passiert, wenn ich einen virtuellen Apache-Server zu
/
erstellen würde es das gesamte Dateisystem lesen? Ich habe es noch nie ausprobiert.
Beide Ansätze sind möglich, beide sind gleichermaßen verunsichert. Das einzige, was zu technischen Problemen führen wird, sind Dateisystemberechtigungen. Mit Erweiterungen wie 'sudo' kann man das auch umgehen, aber die Dinge werden offensichtlich noch unsicherer. Zum Beispiel das Lesen der Passwörter für die Systemkonten. Keine gute Sache, oder? – arkascha
@arkascha er macht gerade eine demonstration auf raspberry pi, keine sorge über die sicherheit – Lynob
Ich sehe nicht, warum man sich nicht um die sicherheit kümmern sollte. Ich würde nicht so einen Zombie in meinem Netzwerk haben wollen. Aber wenn Sie darauf bestehen ... Dürfen wir Sie bitten, die URL auf dem System zu veröffentlichen? Wir alle möchten es benutzen ... – arkascha