Hello,
Hi!
Meine Frage war doch nicht, was dokumentiert ist, sondern, wie die die Funktion das "uploaded" feststellt. Da der Temporärdateiname vom Server-System ausgewürfelt wird und die Einstellung für 'upload_tmp_dir' mit PHP_INI_SYSTEM gekennzeichnet ist, kann ich mir nicht vorstellen, welchen Einfluss der Client auf diese Namen bzw. den Pfad nehmen könnte.
Nicht auf den Namen der hochgeladenen Datei, aber auf den String, den du bei copy() als ersten Parameter übergibst. Und die Funktion weiß natürlich, welche Datei hochgeladen wurde, weil PHP sie ja grad eben in Empfang genommen hat - genau die und nicht irgendwelche anderen, die andere Leute hochgeladen haben oder die schon auf dem System sind.
Da kommen wir der Sache also schon näher. "Die Funktion weiß...". Woher weiß die das? Was weiß die mehr, als es $_FILES sowieso schon weiß?
Was macht also move_uploaded_file() zusätzlich, um die Sicherheit noch zu erhöhen?
Es stellt sicher, dass ein Kopieren mit manipuliertem Dateinamen - sprich: anderer als der hochgeladener Dateien - nicht stattfinden kann.
Wer sollte den denn manipulieren, wenn das Script, ihn aus $_FILES['???']['tmp_name'] oder $_FILES['???']['tmp_name'][x] (bei mehreren Files unter dem Namen ['???'] entnimmt.
Soll das heißen, dass in $_FILES 'nur so ungefähr' und 'manchmal' die richtigen Temporärdateinamen drinstehen?
Ich halte die Funktion (bei Verwendung von $_FILES) immer noch für Quatsch, solange mir niemand zeigen kann, was die mehr kann.
Wen soll es eigentlich schützen?
Den Werserver.
*mmh*
Leuchtet mir nicht ein.Ungewollte Offenlegung von Informationen auf dem Server wird verhindert.
*grummel*
Das ist mir vollkommen klar. Ich frage mich nur, durch welche Maßnahme an welcher Stelle soll das verhindert werden? mMn kann hier nichts eingeschleppt werden. Und wenn der Scriptautor einen Fehler macht, kann er die Datei ggf. auch gleich selber klauen, wenn er dran kommt.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg