Raketenwilli: Asynchrone Prozesse im Browser als Ursache + Ups! Wirklich gefährlich!

Beitrag lesen

Hm.

Das zeigt leider nicht, ob der Upload noch stattfindet, während auf dem Server schon gezippt wird. Und die gezeigte Warnung

zip warning: file size changed while zipping 

lässt genau das vermuten.

Es ist also sehr wahrscheinlich so, dass der Upload noch stattfindet, während gezippt werden soll.

Lösung:

  • Initiere den Request für das Zippen erst, wenn die Uploads der Filechunks komplett „durch“ sind. (browserseitig, im JavaScript)
  • Achte also auch darauf, dass der auf dem Server laufende Prozess (wohl ein anderes PHP-Skript!), der die Filechunks zur Datei zusammenfügt (auch das kann etwas dauern), sein „ok“ erst sendet, wenn wirklich alle Befehle darin abgeschlossen sind - insbesondere das Zusammenfügen der Datei wirklich vollständig stattgefunden hat.
$folder = $_POST["folder"];

Ich hab jetzt nicht gesehen, dass wirklich etwas passieren kann - aber:

Was passiert, wenn jemand

../../../../../etc

sendet? Dann hast Du

$target_path = "/srv/www/htdocs/test/upload/../../../../../etc"

oder eben:

$target_path = "/etc"

Alarm!

Lege sowas auf dem Server fest und/oder schreibe es in eine Session. Nicht per POST oder GET vom Browser nehmen! NeverEver!

Das geht zwar hier aus einem anderen Grund schief (weil dann das zip-File nicht geschrieben werden kann) aber das Eis ist zu dünn.