Monatsarchiv für Februar 2009

 
 

Server Response mitten im POST File Upload

Bei den aktuellen Arbeiten an einer Seite stieß ich auf folgendes Problem:
Beim Upload von Dateien soll eine maximale Dateigröße nicht überschritten werden.
Dazu fielen mir mehrere Möglichkeiten ein um diesen Check zu realisieren.

  • Per Javascript die Dateigröße checken, was aber viel zu unsicher ist und leicht umgangen werden kann.
  • Per PHP/Ruby/... die Größe der hochgeladenen Datei prüfen - Da die Datei bereits hochgeladen wurde hätte man dies auch gleich bleiben lassen können.
  • Dem Webserver eine maximale POST-Size mitgeben, bei Überschreitung macht dieser dann einen 3XXer Redirect oder zeigt eine Fehlerseite an.

Da die ersten beiden Fälle keinen Sinn machen oder zu Fehleranfällig sind , hab ich den letzten Ansatz weiter verfolgt und musste dabei folgendes feststellen:

Keiner der getesteten Browser hat sich während eines POST File Uploads dazwischenreden lassen.
Den Server habe ich einen 302 Header an die Browser senden lassen, während diese am Hochladen waren. FF und Opera haben stur Ihre "Connection Resettet" Fehlermeldung gezeigt und sich nicht um den 302er Haeder gekümmert.

Doch einzig Opera hat, beim, in dieser Situation, Standardkonformen 413er Header eine vom Server gesendete Seite angezeigt.

Diese Erkentnisse lassen mich jetzt die Maximale POSTsize auf ein relativ hohen Wert einstellen, der hoffentlich von nur recht wenigen Nutzern wirklich jeh überboten wird.

phpMyAdmin 3 und ein leeres root Passwort

Heute hatte ich mal wieder die Ehre einen Debian Etch Webserver aufzusetzten. Standardmäßig mit apt-get install mysql-server-5.0 Mysql installiert, das neueste stabile phpMyadmin in /var/www entpackt und eingerichtet. Da Mysql5 unter Etch bei der Installation standardmäßig kein root Passwort abfragt wollte ich das schnell per phpMyAdmin machen musste jedoch feststellen dass dies nicht ging.

In der phpMyAdmin Dokumentation fand sich den auch der Grund, der Login mit leeren Passwörtern ist ab Version 3 per default nicht gestattet:

http://www.phpmyadmin.net/documentation/#config

Die Einstellung um dies zu deaktivieren lautet:

$cfg['Servers'][$i]['nopassword'] = true;

Allow attempt to log in without password when a login with password fails. This can be used together with http authentication, when authentication is done some other way and phpMyAdmin gets user name from auth and uses empty password for connecting to MySQL. Password login is still tried first, but as fallback, no password method is tried.

Ich finde diese Einstellung macht Sinn da es sonst bei einer unbewussten Installation von Mysql einem möglichen Angreifer ein unnötiges Tor öffnet.