Dieses von Sebastian Kübeck verfasste Buch aus dem mitp-Verlag befasst sich mit den Methoden sicherer Softwareentwicklung speziell für webbasierte Anwendungen. Die zugrunde liegenden Überlegungen sind aber größtenteils auch auf andere Bereiche der Softwareentwicklung übertragbar. Das Buch richtet sich an Softwareentwickler, die sich noch nicht intensiver mit Informationssicherheit und dem Schreiben sicheren Codes befasst haben. Und die somit einen Einstieg in die Themen Informationssicherheit sowie Methoden sicherer Webentwicklung suchen. Aber auch Administratoren webbasierter Systeme können davon profitieren.
Das Buchh ist in drei Teile gegliedert. Im ersten Teil werden nach einer kurzen Einführung in die Geschichte der Informationssicherheit Grundkonzepte der IT-Sicherheit speziell aus der Sicht des Softwareentwicklers erläutert. Dazu zählen Dinge wie die Prinzipien sicherer Softwareentwicklung, Authentisierungsverfahren oder sichere Datenübermittlung durch den Einsatz kryptografischer Verfahren.
Teil zwei befasst sich mit häufig auftretenden Schwachstellen in Softwareprodukten sowie Wegen zu deren Vermeidung. Dazu zählen Filterung und Aufbereitung nahezu jeder Form von Eingabe durch Anwender, um z.B. Code-Injection- und Scripting-Angriffen vorzubeugen. Oder die Vermeidung von Webserver-Konfigurationen durch die Teile der Systemkonfiguration per Suchmaschine erfassbar (Google Hacking) oder durch manuelles Suchen (Path Traversal) erreichbar werden.
Oftmals beginnen Probleme mit der Applikationssicherheit jedoch bereits bei der Verwendung von altbewährten und weit verbreiteten Bibliotheksfunktionen gerade der C-Sprachen, welche direkte Speicherzugriffe ermöglichen und die aufgrund von Implementationsfehlern zu Sicherheitsproblemen wie Pufferüberläufen, Code Injection-Schwachstellen u.ä. führen und daher nicht mehr verwendet werden sollten.
Webanwendungen können auch anfällig für DDOS-Attacken werden, wenn sich in ihnen Code aufspüren lässt, der zu Speicherlecks, Endlosschleifen, Rekursionen mit fehlerhafter Abbruchbedingung führt oder der Wartezeiten auf (schwächere) nachgelagerte Systeme wie z.B. entfernte Datenbanken generiert.
Schließlich gibt Teil drei konkrete Tipps und Hinweise wie man durch qualitätssichernde Maßnahmen wie Pen-Tests, Code Reviews, Softwaretests sowie der Berücksichtigung von Prinzipien sicherer Entwicklung von Webapplikationen seine Software sicherer macht. Hier wird z.B. auch auf (meist quelloffene) Testing-Tools wie Schwachstellen-Scanner, Mustersucher für die Quellcodeanalyse oder Tools zur Testautomation eingegangen.
Stets werden die Erläuterungen im Buch von entsprechenden Codebeispielen (meist in Java oder Javascript sowie in SQL für Datenbankzugriffe) begleitet, in denen die problematischen Stellen nachvollziehbar erläutert werden.
Alles in allem ein sehr lesenswertes Buch speziell für Softwareentwickler aber auch für generell am Thema sicherer Software interessierter IT-Fachleute. Wobei das Thema Entwicklung sicherer webbasierter Anwendungen gerade im Zeitalter von Cloud Computing und mobiler Apps drastisch an Bedeutung gewinnen dürfte.