Verarbeitung von Formularen

Clientseitige Sicherheit ist der falsche Ansatz, sämtliche Werte müssen grundsätzlich serverseitig vor ihrer Verarbeitung überprüft werden. Das folgende kleine Beispiel zeigt, dass dies nicht nur für $_GET-Werte sondern auch für $_POST-Werte gilt.

Das folgende Beispiel illustriert die Notwendigkeit der serverseitigen Filterung übertragener Daten:

Zitat<form action="/process.php" method="POST">
<select name="color">
    <option value="red">red</option>
    <option value="green">green</option>
    <option value="blue">blue</option>
</select>
<input type="submit" />
</form>

Man muss sich nun vorstellen, ein potentieller Angreifer würde das Formular sichern und so abändern:

Zitat<form action="http://example.org/process.php" method="POST">
<input type="text" name="color" />
<input type="submit" />
</form>

Dieses neue Formular kann nun auf jedem beliebigem Server abgelegt werden - es reicht, wenn es mit einem Browser aufgerufen werden kann. Durch die absolut vorgegebene Adresse werden nach dem Klick auf "Submit" die Anfragen weiterhin an den ursprünglichen Server übermittelt.

Dies verdeutlicht, dass Client-seitige Prüfungen sinnlos sind, sowohl feste Vorgaben von Werten innerhalb des Formulars als auch der Einsatz von Skripten, etwa dem beliebten Javascript, die ohnehin nur beim Client ausgeführt werden. Mit dieser simplen Methode kann jeder User das Formular kopieren, manipulieren und für eigene Zwecke verwenden. 


Netzwerke