Sichere Web Applications

Das Thema Sicherheit sollte bei der Programmierung von Web Applications an vorderer Stelle stehen. Dabei geht es einerseits darum, Sicherheitslücken in der Software zu vermeiden, zum anderen müssen vertrauliche Nutzerdaten sicher übertragen und gespeichert werden.

In der Softwareentwicklung bedeutet sichere Programmierung letztendlich nichts anderes als sauberen und fehlerfreien Code zu erstellen. In erster Linie müssen Eingaben aus nicht vertrauenswürdigen Quellen aufs Genaueste validiert und gegebenenfalls zurückgewiesen werden. In der Webentwicklung haben sich hier einige typische Fehlerquellen gezeigt, derer man mit einem systematischen Ansatz Herr werden kann.

Ein bekanntes Beispiel sind Sicherheitsprobleme durch SQL Injection beim Einsatz von relationalen Datenbanken. Diese können entstehen, wenn Benutzereingaben ungeprüft in SQL Statements eingebaut werden. Ein Angreifer erhält so weitgehende Kontrolle über die SQL-Datenbank. Durch das Auslesen von Passwörtern oder anderen sensiblen Daten kann er oft weiterreichenden Zugriff auf das System erhalten. Dieser Problematik begegnet man am besten durch den Einsatz von Programmbibliotheken, die bei dem sicheren Erstellen von SQL-Befehlen helfen und typischerweise Bestandteil von ORM-Lösungen sind.

Ein anderes oft auftretendes Problem sind Lücken durch Cross Site Scripting (XSS). Dabei werden Benutzereingaben ohne ausreichende Maskierung in den HTML-Code dynamisch generierter Seiten eingebaut. Mögliche Folgen sind der Diebstahl von Cookies und weiterer vertraulicher Daten nichtsahnender Nutzer. Eine gute Methode, derartige Angriffe zu vermeiden, besteht im Einsatz von Template-Systemen wie XSLT, die Variablen standardmäßig korrekt maskieren.

Auch die Verschlüsselung von Daten spielt bei Entwicklung sicherer Webanwendungen eine wichtige Rolle. Beispielsweise sollten sensible Webinhalte bei der Übertragung mittels SSL verschlüsselt werden. Für Passwörter empfiehlt sich eine Verwürfelung durch anerkannte Verfahren wie bcrypt oder PBKDF2.