heinetz: File Upload und Sicherheit

Beitrag lesen

Tach!

Vorab möchte ich mich mit dem Thema Sicherheit/Datenschutz in diesem Kontext auseinandersetzen.

  1. Könnt Ihr mir Tipps geben, was ich beachten muss?

Das Upload-Verzeichnis sollte außerhalb des DocumentRoot liegen, damit nicht jemand Zeugs hochlädt und gleich vom Webserver ausführen lassen kann. Sollte das heutzutage immer noch nicht seitens des Providers gehen, so ist ein Wechsel dringend angeraten.

ich dachte, hochgeladene Dateien werden immer in das i.d. php.ini definierte upload_temp_dir hochgeladen und dann bspw. mit php per move_uploaded_file verschoben. Insofern würde ich denken, wenn das upload_temp_dir ausserhalb des DocRoot definiert ist (wovon ich ausgehe) liegt es in meiner Verantwortung, wohin ich die Files verschiebe.

Sollen die Dateien sofort zum Download zur Verfügung stehen und du keine händische Prüfung vornehmen möchtest, ist zumindest eine Dateiendungsprüfung vorzunehmen und nur ein paar harmlose Endungen sollten gestattet werden.

zunächst ist nicht geplant, die Files zum Download anzubieten. Das Plugin, dass ich einsetzen möchte, zeigt nach der Auswahl der Datei(en) von der lokalen Festplatte ein Thumbnail der Datei an sofern es sich um eine Grafik handelt, aber die Funktion ist m.E. Teil der HTML5 File Api. Und, ohne mich damit nun weiter auseinander gesetzt zu haben, würde ich denken, die Technik ist soweit sicher.

  1. Wie muss ich mir "cross domain file upload" vorstellen?

Das Script mit dem File-Upload-Formular (oder deinem Javascript-Aufsatz) kommt von Domain X und der Upload hat das Ziel Y. Moderne Browser weigern sich, weil man damit anderen Domains Zeug unterschieben kann. Davon unberührt sind Uploads, die irgendwelche maliziösen Programme direkt ausführen, ohne den Browser eines Anwenders zu bemühen.

Please note that all provided implementations allow cross-site file uploads. If you don't need that functionality, you should remove the code parts that set the "Access-Control-Allow" headers.

Mit diesem Header erlaubt der Server des Scripts dem Browser die angegebenen Domains als Ziel für den Datentransfer zu verwenden. Ansonsten sperren sich die Browser - zumindest jene, die diesen Sicherheitsmechanismus eingebaut haben. Andere und alle Nicht-Browser-Clients sind davon unberührt.

dedlfix.