Sicherheitsaspekte in GWT-Anwendungen 2: Datensicherheit und gefälschte HTTP-Requests

Im ersten Artikel zu Sicherheitsaspekten von GWT-Anwendungen haben wir dargestellt, dass Entwickler durch die Verwendung des Google Web Toolkits Anwendungslogik und Daten potenziell nach außen freigeben: Da JavaScript nicht kompiliert, sondern im Quelltext in den Web-Browser geladen wird, ist es möglich, Informationen auch einzusehen und zu manipulieren. Nach potenziellen Gefahren durch Zugriffe auf die Logik befassen wir uns an dieser Stelle mit Fragen der Datensicherheit und der Problematik gefälschter HTTP-Requests.

Datensicherheit

Bezüglich der Daten sind ähnliche Aspekte wie auch bei der Anwendungslogik zu betrachten. Die GWT-Applikation im Browser kommuniziert mit der Server-Anwendung, beide Seiten tauschen Daten miteinander aus. Die Daten, die sein Browser mit dem Server austauscht, kann sich der Nutzer sehr einfach z.B. mit dem Firefox-Plugin Firebug anzeigen lassen:

Firebug ist in der Lage, die HTTP POST-Anfrage und -Antwort anzuzeigen. In der Abbildung ist die Antwort des Servers zu sehen. Die Daten sind dabei recht einfach zu verstehen und zu lesen. Damit wird deutlich: Der Entwickler muss auch bei den übermittelten Daten wachsam sein und definieren, wer zu welchem Zeitpunkt was sehen darf.

Mit den Mitteln von GWT ist es einfach, bereits frühzeitig viele Daten vom Backend in die GWT-Anwendung zu transportieren. Das erspart dem Nutzer später die Wartezeit beim Nachladen von Daten. Allerdings kann es dadurch schnell passieren, dass der User an Daten gelangt, die gar nicht für seine Augen bestimmt sind.

Nehmen wir das Beispiel einer Liste aller Nutzer: Theoretisch ist es möglich, alle Benutzer, die in einer Datenbank stehen, in den Browser zu laden, um die Anmeldung des Users am System zu beschleunigen. Somit hätte dieser potenziell Zugriff auf diese Daten.

Dieses Szenario ist natürlich nicht erwünscht und solche offensichtlichen Gefahrenquellen schließt ein Entwickler bei der Programmierung auch aus. In einer komplexen Anwendung sind jedoch zahlreiche Situationen denkbar, die zu kleineren oder größeren Sicherheitslücken führen können und die berücksichtigt werden müssen.

Die Fragen, die sich der Entwickler bezüglich der Daten stellen sollte:

  • Ist der aktuelle Nutzer berechtigt, die Daten zu sehen? Kontrolle durch: Benutzer aus Session im Server-Code im Hinblick auf seine Berechtigung auf den Datenzugriff überprüfen: Gehört der Datensatz, der geladen werden soll, wirklich zu diesem Benutzer?
  • Sind zu viele Datensätze enthalten? Wenn eine Liste von Datensätzen übermittelt wird, sollte für jeden Eintrag die o. g. Kontrolle durchgeführt werden.
  • Umgang mit sicherheitsrelevanten Daten? Beispiel: Passwörter von Benutzern sollten nicht im Klartext und Captcha-Code zur Validierung, der zur automatisierten Umgehung des Captchas genutzt werden kann, gar nicht an den Browser übermittelt werden.
  • Sind geschäftsrelevante Daten eingeschränkt? Beispiel: Basiert das Geschäft einer Seite auf den dargestellten Daten, sollte man im Auge behalten, in welchem Umfang man die Daten an den Browser übermittelt.

Fälschen von HTTP-Anfragen

Zieht man die Fälschungssicherheit der Daten heran, die der Browser an den Server schickt, ist es noch einfacher als im Zusammenhang mit der Anwendungslogik möglich, das System zu kompromittieren.

Wie besprochen kann man sich die Anfrage, die der Browser an den Server stellt, sehr einfach anzeigen lassen. Mittels Tools wie z.B. des Firefox-Plugins Poster ist es möglich, diese Anfrage selbst anzupassen und an den Server zu schicken. Mit ein wenig Sachverstand kann man die Anfrage dann auch so abändern, dass etwa Daten von anderen Usern geladen werden.

Mit den oben dargestellten Maßnahmen zur Gewährleistung der Datensicherheit kann der Entwickler die Anwendung gegen diese Angriffsformen absichern. Es empfiehlt sich, nach einem festen Grundsatz zu verfahren:

„Vertraue nie dem Nutzer, sondern prüfe immer seine Berechtigung hinsichtlich der angeforderten Funktion bzw. Daten.“

Fazit

Der Einsatz von GWT und ähnlichen Frameworks vereinfacht die Verlagerung von Anwendungsteilen in den Browser des Nutzers. Bei der Realisierung von Internet-Anwendungen hat GWT zahlreiche Vorteile. Dennoch muss der Entwickler wichtige neue Aspekte berücksichtigen, um Sicherheitslücken systematisch auszuschließen. Dann ist die mit GWT erstellte Applikation eine ebenso sichere wie schnelle und flexible Web-Software.

//SEIBERT/MEDIA entwickelt mit GWT

Derzeit realisiert //SEIBERT/MEDIA zwei große Projekte mit GWT und hat bereits umfassende Erfahrungen gesammelt. Unser aktuelles Projekt TwentyFeet, das Auswertungs-Tool für professionelle Social-Media-Aktivitäten, gibt Ihnen einen kompakten Überblick über die Möglichkeiten des Frameworks.

Planen Sie ein Software-Projekt? Möchten Sie Ihre bestehende Applikation mit neuen Funktionen ausstatten oder optimieren? Die Entwickler von //SEIBERT/MEDIA/TECHNOLOGIES sind Experten in der Anwendungsentwicklung mit Java, GWT, Groovy & Grails und Perl und helfen Ihnen gerne weiter. Bitte sprechen Sie uns unverbindlich an!

Weiterführende Informationen

Security for GWT Applications
Sicherheitsaspekte in GWT-Anwendungen 1: Anwendungslogik und Manipulationen
GWT: Evolution der Internet-Anwendung
Dynamische Internet-Anwendungen: GWT im Projekteinsatz
Dynamische Internet-Anwendungen: GWT aus Entwicklerperspektive


Mehr über die Creative-Commons-Lizenz erfahren