Dominik Schadow. Java-Web-Security. Sichere Webanwendungen mit Java entwickeln

Ähnliche Dokumente
Michael Kurz Martin Marinschek

Konfigurationsmanagement mit Subversion, Ant und Maven

VMware vrealize Automation Das Praxisbuch

Nicolai Josuttis. SOA in der Praxis. System-Design für verteilte Geschäftsprozesse

Über die Herausgeber

IT-Service-Management mit ITIL 2011 Edition

Praxisbuch BI Reporting

IT-Servicemanagement mit ITIL V3

Dipl.-Inform. Sven Röpstorff Dipl.-Kaufm. Robert Wiechmann

Cloud-Computing für Unternehmen

IT-Servicemanagement mit ITIL V3

Mike Burrows Übersetzer: Florian Eisenberg Wolfgang Wiedenroth


Software modular bauen

Prof. Dr. Matthias Knoll

Die Computerwerkstatt

Tilman Beitter Thomas Kärgel André Nähring Andreas Steil Sebastian Zielenski

er auch mit dem 3D-Programm Blender in Kontakt, über das er bisher zahlreiche Vorträge hielt und Artikel in Fachzeitschriften veröffentlichte.

Dr. Michael Hahne

Basiswissen Medizinische Software

Praxiswissen TYPO3 CMS 7 LTS

Continuous Delivery. Der pragmatische Einstieg. von Eberhard Wolff. 1. Auflage. dpunkt.verlag 2014

Maik Schmidt arbeitet seit beinahe 20 Jahren als Softwareentwickler für mittelständische und Großunternehmen. Er schreibt seit einigen Jahren

Basiswissen Medizinische Software

Uwe Vigenschow Andrea Grass Alexandra Augstin Dr. Michael Hofmann

CNC-Fräsen für Maker und Modellbauer

Professionell blitzen mit dem Nikon Creative Lighting System

JavaScript kinderleicht!

Im Rahmen seiner Beratertätigkeit veröffentlicht er Artikel und hält Vorträge und Schulungen zu diesen und weiteren Themen.

IT-Projektverträge: Erfolgreiches Management

Dr. Carola Lilienthal

Leitfaden Web-Usability

Kim Nena Duggen ist Vorstand und Trainerin der oose Innovative Informatik eg. Ihre thematischen Schwerpunkte sind das Geschäftsprozessmanagement,

Maik Schmidt

dpunkt.lehrbuch Bücher und Teachware für die moderne Informatikausbildung

Basiswissen Software-Projektmanagement

IT-Controlling für die Praxis

Fotografieren lernen Band 2

Web-Apps mit jquery Mobile

arbeitete im Max-Planck-Institut und an der Uni Köln. Von ihm sind bereits mehrere Bücher zu Webthemen erschienen.

München 2014) und»uml2 glasklar«(carl Hanser Verlag München

Dipl.-Inform. Henning Wolf Prof. Dr. ir. Rini van Solingen Eelco Rustenburg

Über die Autoren.

Helge Dohle Rainer Schmidt Frank Zielke Thomas Schürmann ISO Eine Einführung für Manager und Projektleiter

Joachim Baumann Daniel Arndt Frank Engelen Frank Hardy Carsten Mjartan. Vaadin. Der kompakte Einstieg für Java-Entwickler

Basiswissen Software- Projektmanagement

und -implementierungstechniken, Datenbanken & Java.

Elisabeth Hendrickson Übersetzerin: Meike Mertsch

Managementsysteme für IT-Serviceorganisationen

Software entwickeln mit Verstand

Konfigurationsmanagement mit Subversion, Maven und Redmine

IT-Unternehmensarchitektur

Michael Firnkes

Der Autor ist seit dem Jahr 2001 bei der Firma GeNUA mbh als Security Consultant und gegenwärtig als Koordinator für Intrusion Detection tätig.

Soft Skills für Softwareentwickler

Social Media Analytics & Monitoring

Sebastian Springer, Testgetriebene Entwicklung mit JavaScript, dpunkt.verlag, ISBN D3kjd3Di38lk323nnm

Einsteigerkurs DSLR-Video

Kennzahlen in der IT

Dipl.-Inform. Arno Becker ist bei der visionera GmbH verantwortlich für den Bereich»Mobile Lösungen«. Nach langjähriger Erfahrung mit Java ME

Tanja Hartwig genannt Harbsmeier. Up- und Cross-Selling

Heinrich Hemme, Der Mathe-Jogger 2

Gradle. Ein kompakter Einstieg in modernes Build-Management. Joachim Baumann. Joachim Baumann, Gradle, dpunkt.verlag, ISBN

Martina Seidl Marion Brandsteidl Christian Huemer Gerti Kappel. Classroom. Eine Einführung in die objektorientierte Modellierung

Datawarehousing mit SAP BW 7

Handbuch Kundenmanagement

Basiswissen Softwaretest

Dipl.-Inform. Arno Becker Dipl.-Inform. Marcus Pant

Basiswissen Softwaretest

Alexander Geschonneck ix-edition

Jens Jacobsen. Website-Konzeption. Erfolgreiche Websites planen, umsetzen und betreiben. 7., überarbeitete und erweiterte Auflage

X.systems.press ist eine praxisorientierte Reihe zur Entwicklung und Administration von Betriebssystemen, Netzwerken und Datenbanken.

Marcus Schießer Martin Schmollinger. Workshop Java EE 7. Ein praktischer Einstieg in die Java Enterprise Edition mit dem Web Profile

Geschichten vom Scrum

ipad Air und ipad mini Retina

Soft Skills für Softwareentwickler

Christina Janning. Change Management. Möglichkeiten der Kommunikation zur Reduzierung innerbetrieblicher Widerstände. Diplomarbeit

Tom Gansor Dr. Andreas Totok

Abenteuer Softwarequalität

Lebendige Webseiten mit Adobe Edge Animate

Psychologie der Fotografie: Kopf oder Bauch?

Whittaker, Holtermann, Hänni / Einführung in die griechische Sprache

Andreas Spillner / Ulrich Breymann, Lean Testing für C++-Programmierer, dpunkt.verlag, ISBN

Geschichten vom Scrum

Bereits während seines Studiums der Humanmedizin übte Bertram Solcher fotojournalistische Tätigkeiten für regionale

Erwin Lammenett. TYPO3 Online-Marketing-Guide

Vorlesung Hochschule Esslingen IT-Winter School 2013

Andy Hunt. Programmieren lernen mit Minecraft-Plugins

Seniorenbüros im Land Brandenburg

Praxiswissen COBIT. Grundlagen und praktische Anwendung in der Unternehmens-IT. von Markus Gaulke. 2., akt. u. überarb. Aufl.

InDesign automatisieren

K.-H. Bichler Das urologische Gutachten

Nicholas C. Zakas, JavaScript objektorientiert, dpunkt.verlag, ISBN D3kjd3Di38lk323nnm

Das LEGO -MINDSTORMS-EV3-Ideenbuch

ios-apps programmieren mit Swift

Transkript:

Dominik Schadow Java-Web-Security Sichere Webanwendungen mit Java entwickeln

Dominik Schadow info@dominikschadow.de Lektorat: René Schönfeldt Copy-Editing: Friederike Daenecke, Zülpich Satz: Da-TeX, Leipzig Herstellung: Frank Heidt Umschlaggestaltung: Helmut Kraus, www.exclam.de Druck und Bindung: M.P. Media-Print Informationstechnologie GmbH, 33100 Paderborn Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. ISBN: Buch 978-3-86490-146-1 PDF 978-3-86491-448-5 epub 978-3-86491-449-2 1. Auflage Copyright 2014 dpunkt.verlag GmbH Wieblinger Weg 17 691123 Heidelberg Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen. Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen. Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen. 5 4 3 2 1 0

v Inhaltsverzeichnis 1 Einleitung... 1 1.1 ÜberdiesesBuch... 2 1.2 ZielgruppeundVoraussetzungen... 3 1.3 Webanwendungen... 4 1.4 Abgrenzung... 5 1.5 Der Quellcode zum Buch.................................. 6 1.6 AufbaudesBuches... 7 1.7 Danksagungen... 9 2 SicherheitvonAnfangan... 11 2.1 ForderungnachSicherheit... 11 2.2 WarumistsichereSoftwarewichtig?... 13 2.3 Wermusssicherentwickeln?... 14 2.4 Sicherheit in allen Phasen.................................. 16 2.5 VeränderungenimEntwicklungsprozess... 18 2.5.1 Klärung der notwendigen Sicherheitsanforderungen. 19 2.5.2 Risikoanalyse... 19 2.5.3 Sicherheiteinplanen... 21 2.5.4 Code-Reviews... 22 2.5.5 GanzheitlicheSicherheit... 22 2.6 DerPreisderSicherheit... 24 2.7 SichereWebapplikationenentwickeln... 25 2.7.1 Altapplikationenabsichern... 26 2.7.2 WebApplicationFirewalls... 27 2.8 AbsoluteSicherheitgibtesnicht... 29 2.9 AufeinenBlick... 29 3 Javaistdochschonsicher?!... 31 3.1 Grundlagen... 31 3.2 Java-FeaturesrundumdieSicherheit... 33 3.3 WasJavanichtleistenkann... 34 3.4 WelcheJava-Versionensindbetroffen?... 35 3.5 SichereEntwicklungmitJava... 36

vi Inhaltsverzeichnis 3.5.1 OpenWebApplicationSecurityProject... 38 3.5.2 CWE/SANS... 40 3.6 AufeinenBlick... 42 4 Java-Security-Basics... 43 4.1 Security-Frameworks... 43 4.1.1 EnterpriseSecurityAPI... 47 4.1.2 CoveritySecurityLibrary... 47 4.1.3 KorrekteVerwendung... 48 4.2 Input-Validierung... 49 4.2.1 ThreatModeling... 51 4.2.2 Validierungsregeln... 52 4.2.3 Validierung aller Benutzereingaben.................. 55 4.2.4 ValidierunginFrontendundBackend... 59 4.2.5 Frameworks... 61 4.3 Output-Escaping... 62 4.3.1 Grundlagen... 63 4.3.2 Frameworks... 67 4.4 Fehlerbehandlung... 70 4.5 AufeinenBlick... 72 4.5.1 Beispielprojekte... 73 4.5.2 Checkliste... 73 5 Session-ManagementmitJava... 75 5.1 Grundlagen... 75 5.1.1 FrühzeitigeKlärungderAnforderungen... 76 5.1.2 Transportsicherheit... 77 5.2 Session-HandlingundSession-ID... 79 5.2.1 Session-Fixation... 81 5.2.2 HTTPStrictTransportSecurity... 83 5.2.3 Cookies... 88 5.2.4 SessiondatenimCookiespeichern... 89 5.2.5 Vollständige Konfiguration der web.xml............. 91 5.3 AuthentifizierungundAutorisierung... 91 5.3.1 PresentationLayerAccessControl... 92 5.3.2 Anwendungen für Benutzer und Administratoren.... 100 5.4 VerwendungvonFrameworks... 101 5.5 AufeinenBlick... 102 5.5.1 Beispielprojekte... 102 5.5.2 Checkliste... 103

Inhaltsverzeichnis vii 6 Injections... 105 6.1 Grundlagen... 105 6.2 SQLInjection... 107 6.2.1 Waskannpassieren?... 109 6.2.2 WieläufteinAngriffab?... 110 6.2.3 WaskönnenSiedagegentun?... 114 6.3 WeitereInjections... 124 6.3.1 XPathInjection... 125 6.3.2 LogInjection... 129 6.4 AufeinenBlick... 131 6.4.1 Beispielprojekte... 131 6.4.2 Checkliste... 132 7 Cross-SiteScripting(XSS)... 133 7.1 Grundlagen... 133 7.2 Waskannpassieren?... 137 7.3 WieläufteinAngriffab?... 139 7.3.1 StoredXSS... 142 7.3.2 ReflectedXSS... 144 7.3.3 DOMBasedXSS... 146 7.4 WaskönnenSiedagegentun?... 148 7.4.1 Session-Informationenschützen... 149 7.4.2 Input-Validierung... 153 7.4.3 Output-Escaping... 155 7.4.4 ContentSecurityPolicy(CSP)... 164 7.4.5 BrowsererkennungvonXSS... 170 7.5 AufeinenBlick... 172 7.5.1 Beispielprojekte... 173 7.5.2 Checkliste... 174 8 Cross-SiteRequestForgery(CSRF)... 175 8.1 Grundlagen... 175 8.2 Waskannpassieren?... 180 8.3 WieläufteinAngriffab?... 182 8.4 WaskönnenSiedagegentun?... 183 8.4.1 BegrenzungderSessiondauer... 184 8.4.2 FormulareperHTTPPOSTübertragen... 186 8.4.3 Captchas... 189 8.4.4 VerwendungeinesAnti-CSRF-Tokens... 190 8.5 KombinationvonCSRF-undXSS-Angriffen... 202 8.6 AufeinenBlick... 203 8.6.1 Beispielprojekte... 204 8.6.2 Checkliste... 204

viii Inhaltsverzeichnis 9 Tools... 205 9.1 CodeanalyseundCodequalität... 205 9.1.1 Überblick... 206 9.1.2 FindBugs... 208 9.1.3 PMD... 210 9.1.4 OWASPDependencyCheck... 210 9.1.5 WeitereTools... 212 9.2 AnalyseundTraining... 212 9.2.1 Überblick... 214 9.2.2 OWASPZAP... 214 9.2.3 OWASPSecurityShepherd... 217 9.2.4 OWASP Broken Web Applications Project............ 218 9.2.5 WeitereTools... 219 9.3 AufeinenBlick... 220 9.3.1 Checkliste... 220 10 Ausblick... 221 10.1 WasSiejetztbeherrschen... 221 10.2 WeitereThemen... 222 10.3 NächsteSchritte... 223 10.3.1 SecurityTesting... 223 10.3.2 SecurityReviews... 224 10.3.3 SecurityDevelopmentLifecycle... 224 10.4 Fazit... 225 Anhänge... 227 A CSRFundWebservices... 229 B WeitereSecurity-Frameworks... 231 B.1 SpringSecurity... 231 B.2 ApacheShiro... 232 C Abkürzungen... 235 Literatur offlineundonline... 237