So lässt sich die Sicherheit der eigenen Webapp verbessern

Mit 7 Tipps zur sicheren Webapp
Kommentare

Sicherheit sollte in Zeiten von immer neuen Sicherheitslücken und Angriffen beim Erstellen von Software-Produkten eine wichtige Rolle spielen. Webapps sind da keine Ausnahme, im Gegenteil. Durch die stetige Erweitung des Webapp-Markts finden potenzielle Angreifer immer neue Wege, auf denen sie sich mangelhafte Sicherheit zu Nutze machen können.

Doch wie sorgt man eigentlich für möglichst viel Sicherheit bei der eigenen Webapp? David Mytton hat dafür gleich mehrere Tipps zusammengestellt, die er und sein Entwicklerteam beim Sichern des von ihnen entworfenen Server-Monitoring-Tools Serverdensity in der Praxis erprobt haben.

7 Tipps für eine sichere Webapp

Natürlich gibt es keine 100prozentige Garantie, dass die eigene Webapp nicht irgendwann Ziel für einen Angriff wird. Um dem aber so gut wie möglich vorzubeugen, lässt sich mit einigen einfachen Maßnahmen ein guter Schutz vor typischen Angriffsszenarien und potenziellen Schwachstellen einrichten:

Best Practices umsetzen


Bevor es überhaupt an die Umsetzung von spezifischeren Tipps geht, ist es ratsam, erstmal das Grundgerüst zu überprüfen. Sprich, man sucht nach den gängigen Best Practices in seinem Entwicklungsbereich und prüft, was die Top-Tipps zum Schutz gegen typische Angriffe wie SQL-Injection, Session Handling, XSRF oder Filtering sind.

Nur SSL nutzen und mit Perfect Forward Security unterstützen


SSL wird immer wieder als möglicher Flaschenhals gesehen, der sich auf die Performance auswirkt. Tatsächlich gibt es aber keinen Grund, nicht von Anfang an die Verbindung über SSL zu verlangen, um für eine sicherere Verbindung zu sorgen.

Genauso ist es ratsam, die Nutzung von SSL mit Perfect Forward Security zu unterstützen. Dabei wie bei jeder Session ein neuer Key erstellt, mit der die Verbindung zu einer SSL-URL verschlüsselt wird. Wird ein solcher Schlüssel kompromittiert, sind nur die Daten in der entsprechenden Sesssion von dem Angriff betroffen, nicht aber sämtliche Verbindungsdaten.

HTTPS-Protokolle verwenden


Idealweise wird nicht nur SSL zur besseren Sicherheit von Webapps genutzt, sondern dies mit der Nutzung von HTTPS-Protokollen kombiniert. Wird nämlich eine Seite zunächst mit einem HTTP-Protokoll aufgerufen und sie dann zu HTTPS umgeleitet, bietet sie in dieser Zeit einige Angriffsmöglichkeiten. Wird dagegen bereits mit der Antwort auf die Anfrage an den Server ein STS-Header mitgesendet, führt der Browser die Umwandlung von HTTP zu HTTPS ohne einen Request durch.

Allerdings bieten auch die STS-Header nicht sofort einen besseren Schutz. Eine Möglichkeit, das Problem anzugehen, ist es, die eigene URL bei Browser-Herstellern einzureichen und so dafür zu sorgen, dass der entsprechende Browser nur mit einer SSL-Verbindung auf die URL zugreifen kann. Einige Browser bieten auch einige zusätzliche Sicherheitsfeatures an, mit denen sich zum Beispiel Response-Headers einrichten lassen.

Content Security Policy einsetzen


Cross-Site-Scripting ist eine der gängigsten Schwachstellen überhaupt, bei der Remote Code in die Seite injiziert und ausgeführt wird. Eine Möglichkeit, dagegen vorzugehen, ist es bestimmte Remote-Quellen auf eine Whitelist zu setzen, sodass dort nicht definierte Script-URLs automatisch blockiert werden. Mithilfe von den Browser Developer Tools lässt sich zudem leicht überprüfen, welche Remote Hosts aufgerufen werden.

Sichere Login-Prozesse designen


Auch bei der Implementierung der Login-Funktionalität können einige Fehler passieren, die für eine mangelhafte Sicherheit der Webapp sorgen können. Auch gilt natürlich in erster Linie, sich über die Best Practices zu informieren. Dabei dürfte sich von selbst verstehen, dass Registrierung und Login zum Speichern von Passwörtern Verschlüsselungsfunktionen nutzen sollten, anstatt Plain-Text oder MD5-Hashing. Genauso sollten beim Passwort-Reset E-Mails mit einem nur begrenzt gültigen Link versandt werden, anstatt das exakte Passwort zuzusenden.

Multi-Factor-Authentifizierung anbieten


Um den Anmeldevorgang noch sicherer zu machen, ist die Nutzung von Mult-Factor-Authentifizierung ratsam. Dabei müssen sich User zunächst über ein Token – etwa das Smartphone des Users oder einer SecurID – identifizieren, bevor sie sich in der Webapp anmelden können. Eine besonders einfach zu implementierende Lösung ist dabei zum Beispiel Googles Two-Factor-Authentifizierung, die an anderer Stelle schon einmal ausführlicher vorgestellt wurde.

Security Audits durchführen


Es dürfte wenig überraschend sein, dass auch die regelmäßige Prüfung der eigenen Sicherheitsmaßnahmen für die Webapp überprüft werden sollte – und zwar intern als Teil der Code-Review, als auch extern durch Security Consultants. So lassen sich leichter mögliche Problemstellen identifizieren und beheben und so ebenfalls für mehr Sicherheit bei der eigenen Webapp sorgen.

Stellen Sie Ihre Fragen zu diesen oder anderen Themen unseren entwickler.de-Lesern oder beantworten Sie Fragen der anderen Leser.

Es wird also deutlich, dass es keine große Schwierigkeit sein muss, seine Webapp möglichst sicher zu gestalten, sondern sich bereits mit einfachen Tipps dafür sorgen lässt, dass potenziellen Angreifern eine möglichst kleine Angriffsfläche geboten wird.

Aufmacherbild: Personal computer protected from external attacks by a brick wall. Digital illustration. von Shutterstock / Urheberrecht: Andrea Danti

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -