Ajax-Risiken lassen sich eindämmen
Ajax-Risiken lassen sich eindämmen
Asynchrone Kommunikation als CruxHier gilt eine der Faustregeln der sicheren Systementwicklung: «Benutzereingaben sind nicht vertrauenswürdig». Alles, was in dem Webbrowser verarbeitet wird, kann manipuliert werden, bevor es zum Server gesendet wird. Grundsätzlich sind solche Daten also nur auf dem Server zu bearbeiten. Lässt sich eine Auslagerung auf den Client nicht vermeiden, so ist eine serverseitige Prüfung der Daten unerlässlich.
Asynchrone Kommunikation als Crux
Durch die asynchrone Kommunikation zwischen Browser und Webapplikation ergibt sich noch ein weiterer Aspekt, der sich zu einem Sicherheitsproblem in Gestalt eines Denial-of-Service (DoS) der Webapplikation ausweiten kann. Ein Beispiel: Bei der Suche nach bestimmten Produkten in einem Online-Shop wird der Benutzer bei einer klassischen Webanwendung den Suchbegriff vollständig in ein Textfeld eingeben und danach einen Button anklicken, um die Daten vom Browser zum Server zu senden. Die Suchanfrage wird vom Server verarbeitet, das Ergebnis zum Browser zurückgesendet und von diesem dargestellt. Zur Erhöhung des Bedienkomforts würde man in einer Ajax-basierten Applikation das Textfeld um eine Auto-Vervollständigungsfunktion erweitern. Mit jedem Buchstaben, den der Benutzer eingibt, zeigt der Browser einen Vorschlag an, um die Eingabe zu vervollständigen. Hierzu sendet die Ajax-Engine im Hintergrund nach jedem eingegebenen Buchstaben eine Anfrage zum Server. Die Antwort wird dann vom Browser dargestellt.
Im Unterschied zum klassischen Modell erhöht sich allein bei diesem Beispiel die Anzahl der Anfragen und Antworten enorm. Multipliziert man das mit mehreren tausend gleichzeitig aktiven Benutzern, so kann eine Webapplikation schnell an die Grenzen ihrer Leistungsfähigkeit gelangen. Um ein solches Risiko zu vermeiden, ist ein ausführlicher Lasttest der Applikation unumgänglich - insbesondere dann, wenn eine bestehende -Applikation, für die eventuell schon ein Lasttest und ein Hardware-Sizing durchgeführt wurde, auf Ajax umgestellt wird.
Betrachtet man Ajax-Applikationen im Hinblick auf die bekannten Angriffe gegen Webapplikationen, wie beispielsweise SQL-Injection, Directory Traversal oder Cross-Site-Scripting (XSS), so zeigt sich, dass diese serverseitig genauso auftreten wie bei klassischen Webapplikationen. Gleiches gilt auch für Ajax-Anwendungen, die ihre Daten mittels XML an Web-Services übertragen. Hier kommen spezifische Angriffe, wie beispielsweise Xpath-Injection genauso zum Tragen wie bei klassischen Web-Applikationen.