2013-04-11 14 views
5

Ich hatte eine interessante Diskussion mit einem Kollegen über Sicherheit in PHP.PHP-Sicherheit für Formulare und DOM-Manipulation

Angenommen, eine Person hat eine PHP-Site, auf der ein Standard-HTML-Formular ausgeführt wird. Ein Angreifer entscheidet sich, Chrome Developer Tools zu verwenden und fügt das DOM enctype="multipart/form-data" und ein file input hinzu.

Der Angreifer lädt eine Datei hoch, die wahrscheinlich nicht ausgeführt wird, wenn es ein Virus ist, aber für diesen Moment immer noch Bandbreite/Speicher verwendet. Würde die Datei einfach in das Verzeichnis PHP /tmp gelangen? Würde das nicht jede Form irgendwie unsicher machen, wenn ein Benutzer eine Datei in irgendeiner Form hochladen kann?

In einem größeren Maßstab was, wenn 100.000 Menschen das zum DOM hinzugefügt und eine zufällige Gigabyte-Datei hochgeladen? Würde das nicht vorübergehend dazu führen, dass sie ihre Bandbreite und/oder Speichermarke treffen?

+1

Sie benötigen noch eine Art von serverseitigem Code, um den Upload zu verarbeiten, wenn er nicht da ist, wird er nicht hochgeladen! – Marty

+1

Es wird automatisch in die '$ _FILES ['name'] ['tmp_name'] gehen' nicht wahr? – JREAM

+2

Wenn Sie einen Hosting-Provider haben, der Ihnen ** eingehende ** Bandbreite berechnet, sagen Sie ihnen bitte, dass sie von einer Bridge springen sollen. Aber ja, Zeug wird automatisch in '/ tmp' gespeichert, aber im Laufe der Zeit recycelt. –

Antwort

3

Der Upload selbst passiert, egal was. Die Datei wird im Upload-Temp-Verzeichnis gespeichert und dann wird das PHP-Skript gestartet. Wenn das Skript die hochgeladene Datei nicht verarbeitet, wird die Datei automatisch aus dem temporären Verzeichnis gelöscht, wenn das Skript ausgeführt wurde.

Ob der Server die Anforderung abbricht, wenn eine maximale Größe überschritten wird, hängt von der Konfiguration ab.

+0

Ahh! Ich habe den Upload der maximalen Dateigröße und Timeouts vergessen - ich denke, dies sind die Sicherheitsmaßnahmen, die dieses Problem ausgleichen! – JREAM

+2

Wenn sich alle von Ihnen hochgeladenen PHP-Skripte in einem Verzeichnis befinden, können Sie die Upload-Dateigröße mit LimitRequestBody in der .htaccess-Datei steuern. Setzen Sie einen kleinen Wert für LimitRequestBody (200 KB) in die .htaccess-Datei von webroor und geben Sie unter dem Verzeichnis, in dem sich Ihr PHP-Skript zum Hochladen befindet, einen höheren Wert für LimitRequestBody an – Amit

Verwandte Themen