In seiner jetzigen Form, is_uploaded_file
prüft, ob das Hochladen von Dateien aktiviert ist (andernfalls kann es sich unmöglich um eine hochgeladene Datei handeln) und ob der angegebene Dateiname tatsächlich von PHP generiert wurde (ich weiß das, weil ich mir den Quelltext angesehen habe).
Dies ist nicht wirklich hilfreich, denn wenn es beim Hochladen keine Probleme gab, dann
is_uploaded_file($_FILES['blah']['tmp_name'])
würde immer zurückkehren true
.
Bedenken Sie jedoch, dass $_FILES
ist "erst" seit PHP 4.1.0 verfügbar, während is_uploaded_file
erschien erstmals mit PHP 4.0.3. Die Schlussfolgerung, die hier logisch erscheint, ist, dass _war es ziemlich schwierig, die Handhabung hochgeladener Dateien sicher zu gestalten, bevor die $_FILES
superglobal wurde zur Verfügung gestellt_ . Wenn nichts anderes, können Nicht-Superglobale injiziert werden, und zwar sehr leicht mit register_globals
aktiviert, was ein weiterer wunder Punkt in Bezug auf die Sicherheit von PHP war.
Wenn man heute Code schreibt und die $_FILES
wie man es sollte, dann würde ich sagen is_uploaded_file
in seiner derzeitigen Implementierung "nutzlos" ist, weil es keinen Angriffsvektor gibt, der Sie dazu bringen kann, eine "schlechte" Datei zu verarbeiten.
Es gibt aber auch eine andere Sicht der Dinge: is_uploaded_file
ist garantiert, dass es jetzt und in Zukunft korrekt funktioniert, solange es verfügbar ist, unabhängig davon, wie das Hochladen von Dateien und ihre Bereitstellung für den Programmierer funktioniert. Vielleicht im Augenblick es bietet nichts Konkretes, aber es ist eine Abstraktion über das Konzept des "sicheren Datei-Uploads", das mit einer Garantie verbunden ist. Ich würde denken, dass es keine solche Garantie gibt für $_FILES
(auch wenn ich es für einen Rückschritt halten würde, wenn sich der derzeitige Status quo "zum Schlechteren" verändert).