HTML5 Security
()
About this ebook
Übrigens: Auch wenn Sie in Ihrer Webanwendung kein HTML5 einsetzen, müssen Sie aufpassen. Und wussten Sie schon, dass die bisher zum Schutz vor Clickjacking eingesetzten Framebuster in HTML5 vom sandbox-Attribut für iframes ausgehebelt werden und dann wirkungslos sind?
Read more from Carsten Eilers
iOS Security: Sichere Apps für iPhone und iPad Rating: 0 out of 5 stars0 ratings
Related to HTML5 Security
Titles in the series (100)
Algorithmen: Grundlagen und Implementierung Rating: 0 out of 5 stars0 ratingsJava EE Security Rating: 0 out of 5 stars0 ratingsTFS 2012 Anforderungsmanagement: Work Items und Prozessvorlagen Rating: 0 out of 5 stars0 ratingsNFC: Near Field Communication für Android-Entwickler Rating: 5 out of 5 stars5/5Überzeugende Präsentationen: Konzeption, Technik und Design Rating: 0 out of 5 stars0 ratingsSkalierbare Softwaresysteme: Design, Betrieb und Optimierungspotenziale Rating: 0 out of 5 stars0 ratingsEinstieg in Google Go Rating: 0 out of 5 stars0 ratingsHTML5 für Mobile Web Rating: 0 out of 5 stars0 ratingsGeolocation mit PHP: Foursquare-API, Google Places & Qype Rating: 0 out of 5 stars0 ratingsF#: Ein praktischer Einstieg Rating: 0 out of 5 stars0 ratingsServiceorientierte Architektur: Anforderungen, Konzeption und Praxiserfahrungen Rating: 0 out of 5 stars0 ratingsIT Wissensmanagement: Theorie und Praxis Rating: 0 out of 5 stars0 ratingsErfolgreiche Spieleentwicklung: OpenGL, OpenAL und KI Rating: 0 out of 5 stars0 ratingsErfolgreiche Spieleentwicklung: OpenCL Rating: 0 out of 5 stars0 ratingsJava EE 7: Ein Ausblick Rating: 0 out of 5 stars0 ratingsHTML5 Security Rating: 0 out of 5 stars0 ratingsJava 7: Fork-Join-Framework und Phaser Rating: 0 out of 5 stars0 ratingsJavaScript auf dem Server Rating: 0 out of 5 stars0 ratingsWebentwicklung mit dem Play Framework Rating: 0 out of 5 stars0 ratingsJavaScript für Eclipse-Entwickler: Orion, RAP und GWT Rating: 0 out of 5 stars0 ratingsUX Design für Tablet-Websites: Ein Überblick Rating: 0 out of 5 stars0 ratingsZend Framework 2: Für Einsteiger und Umsteiger Rating: 0 out of 5 stars0 ratingsBig Data: Technologiegrundlagen Rating: 0 out of 5 stars0 ratingsQualitätssicherung mit JavaScript und PHP Rating: 0 out of 5 stars0 ratingsQualität in IT-Architekturen: Management Rating: 0 out of 5 stars0 ratingsAgile Architektur mit .NET - Grundlagen und Best Practices Rating: 0 out of 5 stars0 ratingsMobile Business: Was Entscheider morgen wissen müssen Rating: 0 out of 5 stars0 ratingsApache Tapestry: Einstieg in die komponentenorientierte Webentwicklung Rating: 0 out of 5 stars0 ratingsTFS 2012 Versionskontrolle: Grundlagen, Check-In Policies und Branch-Modelle Rating: 0 out of 5 stars0 ratingsJava FX - Embedded Rating: 0 out of 5 stars0 ratings
Related ebooks
Java EE Security Rating: 0 out of 5 stars0 ratingsMobile Web-Apps mit JavaScript: Leitfaden für die professionelle Entwicklung Rating: 0 out of 5 stars0 ratingsAngriffsziel UI: Benutzeraktionen, Passwörter und Clickjacking Rating: 0 out of 5 stars0 ratingsModerne Webentwicklung: Geräteunabhängige Entwicklung -- Techniken und Trends in HTML5, CSS3 und JavaScript Rating: 0 out of 5 stars0 ratingsHacken mit Kali-Linux: Schnelleinstieg für Anfänger Rating: 0 out of 5 stars0 ratingsProgressive Web-Apps: Offlinefähige Web-Anwendungen mit nativen Qualitäten Rating: 0 out of 5 stars0 ratingsCross-Plattform-Entwicklung mit HTML und JavaScript Rating: 0 out of 5 stars0 ratingsMicrosoft KINECT: Programmierung des Sensorsystems Rating: 0 out of 5 stars0 ratingsWebsecurity: Angriffe mit SSRF, CSRF und XML Rating: 0 out of 5 stars0 ratingsMeine erste App Rating: 0 out of 5 stars0 ratingsDie Serverwelt von Node.js Rating: 0 out of 5 stars0 ratingsSECURITY AWARENESS: Leitfaden zur IT-Sicherheit für Anwender Rating: 0 out of 5 stars0 ratingsSemantic Web: schnell + kompakt Rating: 0 out of 5 stars0 ratingsSoftware entwickeln mit C#, WPF und dem MVVM-Konzept Rating: 0 out of 5 stars0 ratingsHTML5, JavaScript und jQuery: Der Crashkurs für Softwareentwickler Rating: 2 out of 5 stars2/5.NET-Praxis: Tipps und Tricks zu .NET und Visual Studio Rating: 0 out of 5 stars0 ratingsDocker und die Containerwelt: Einstieg und Expertentipps rund um Docker-Container Rating: 1 out of 5 stars1/5Zukunftssichere Architektur: So bauen Sie monolithische Anwendungen zu komponentenorientierten um Rating: 0 out of 5 stars0 ratingsCSS3: Die neuen Features für fortgeschrittene Webdesigner Rating: 0 out of 5 stars0 ratingsNext Level JavaScript: Schlagworte Rating: 0 out of 5 stars0 ratingsGraphQL: Eine Einführung in APIs mit GraphQL Rating: 0 out of 5 stars0 ratingsJavaScript und Ajax: Das Praxisbuch für Web-Entwickler Rating: 0 out of 5 stars0 ratingsSingle-Page-Web-Apps: JavaScript im Einsatz: Webseiten erstellen mit AngularJS, Meteor und jQuery Mobile Rating: 0 out of 5 stars0 ratingsVue.js für alle: Wissenswertes für Einsteiger und Experten Rating: 0 out of 5 stars0 ratingsNichts ist sicher: Tricks und Techniken von Cyberkriminellen verstehen und sich schützen Rating: 5 out of 5 stars5/5Das Praxisbuch Internet für Einsteiger Rating: 0 out of 5 stars0 ratingsCSS3: Die Referenz für Webentwickler Rating: 0 out of 5 stars0 ratingsVerschlüsselt! Rating: 0 out of 5 stars0 ratings
Programming For You
Algorithmen: Grundlagen und Implementierung Rating: 0 out of 5 stars0 ratingsPowerShell: Anwendung und effektive Nutzung Rating: 5 out of 5 stars5/5Eigene Spiele programmieren – Python lernen: Der spielerische Weg zur Programmiersprache Rating: 0 out of 5 stars0 ratingsWeniger schlecht programmieren Rating: 4 out of 5 stars4/5Programmieren für Einsteiger: Teil 1 Rating: 0 out of 5 stars0 ratingsPython kurz & gut: Für Python 3.x und 2.7 Rating: 3 out of 5 stars3/5JavaScript kurz & gut Rating: 3 out of 5 stars3/5Linux Grundlagen - Ein Einstieg in das Linux-Betriebssystem Rating: 0 out of 5 stars0 ratingsGit kurz & gut Rating: 0 out of 5 stars0 ratingsMicrosoft Word 2016 (Microsoft Press): Einfache Anleitungen für wichtige Aufgaben Rating: 0 out of 5 stars0 ratingsHacken mit Python und Kali-Linux: Entwicklung eigener Hackingtools mit Python unter Kali-Linux Rating: 0 out of 5 stars0 ratingsMikrocontroller in der Elektronik: Mikrocontroller programmieren und in der Praxis einsetzen Rating: 0 out of 5 stars0 ratingsAndroid-Entwicklung für Einsteiger - 20.000 Zeilen unter dem Meer: 2. erweiterte Auflage Rating: 0 out of 5 stars0 ratingsC++: Eine kompakte Einführung Rating: 0 out of 5 stars0 ratingsRichtig einsteigen: Excel VBA-Programmierung: Für Microsoft Excel 2007 bis 2016 Rating: 0 out of 5 stars0 ratingsProgrammieren lernen mit Python 3: Schnelleinstieg für Beginner Rating: 0 out of 5 stars0 ratingsRaspberry Pi: Mach's einfach: Die kompakteste Gebrauchsanweisung mit 222 Anleitungen. Geeignet für Raspberry Pi 3 Modell B / B+ Rating: 0 out of 5 stars0 ratingsHTML5-Programmierung von Kopf bis Fuß: Webanwendungen mit HTML5 und JavaScript Rating: 0 out of 5 stars0 ratingsEinstieg in TypeScript: Grundlagen für Entwickler Rating: 0 out of 5 stars0 ratingsLinux Befehlsreferenz: Schnelleinstieg in die Arbeit mit der Konsole, regulären Ausdrücken und Shellscripting Rating: 0 out of 5 stars0 ratingsPraktisches Programmieren in C: Grundlagen und Tipps Rating: 0 out of 5 stars0 ratingsSQL – kurz & gut Rating: 0 out of 5 stars0 ratingsRaspberry Pi: Einstieg • Optimierung • Projekte Rating: 5 out of 5 stars5/5Das große Python3 Workbook: Mit vielen Beispielen und Übungen - Programmieren leicht gemacht! Rating: 4 out of 5 stars4/5Vue.js für alle: Wissenswertes für Einsteiger und Experten Rating: 0 out of 5 stars0 ratingsSQL von Kopf bis Fuß Rating: 4 out of 5 stars4/5Python | Schritt für Schritt Programmieren lernen: Der ultimative Anfänger Guide für einen einfachen & schnellen Einstieg Rating: 0 out of 5 stars0 ratings.NET-Praxis: Tipps und Tricks zu .NET und Visual Studio Rating: 0 out of 5 stars0 ratingsPython-Grundlagen Rating: 0 out of 5 stars0 ratingsUser Experience Testing 3.0: Status Quo, Entwicklung und Trends Rating: 0 out of 5 stars0 ratings
Reviews for HTML5 Security
0 ratings0 reviews
Book preview
HTML5 Security - Carsten Eilers
Carsten Eilers
HTML5 Security
ISBN: 978-3-86802-417-3
© 2012 entwickler.press
Ein Imprint der Software & Support Media GmbH
Vorwort
HTML5 gibt es als Standard noch gar nicht und wird es als Standard zumindest vorerst auch nicht geben. Stattdessen wird es als Work in Progress
ständig Änderungen daran geben. Trotzdem enthalten die Browser schon mehr oder weniger viele Features davon. Neue Tags und APIs, lokale Datenspeicher, Cross Origin Requests, WebSockets und Co. erlauben die Entwicklung interessanter Webanwendungen, lassen sich aber auch für bösartige Zwecke nutzen. In diesem Buch geht es um letzteres: Wie können Angreifer HTML5 für ihre Zwecke missbrauchen und viel wichtiger: Wie können Sie als Entwickler diese Angriffe verhindern oder zumindest erschweren?
Die Angriffsziele
Wenn man Angriffe abwehren will, ist die erste Frage immer Was will der Angreifer erreichen?
Im Fall der Clients von Webanwendungen gibt es darauf sowohl praktische als auch theoretische Antworten. Fangen wir mit den praktischen an. Zur Zeit gibt es zwei Arten von Angriffen, die weit verbreitet sind:
Im Rahmen von sog. Drive-by-Infektionen wird JavaScript-Code in die Webanwendungen und dadurch in die Clients eingeschleust, der dann sog. Exploits nachlädt, mit denen Schwachstellen im Webbrowser oder dessen Plugins ausgenutzt werden. Der Webclient dient dabei nur als Einfallstor: Nachdem ein Exploit nachgeladen wurde, nutzt der z.B. eine Pufferüberlauf-Schwachstelle im Flash Player aus, um Schadcode im System des Benutzers zu verankern. Danach hat der JavaScript-Schadcode seine Schuldigkeit getan und wird beendet.
Webwürmer nutzen den Client, um sich über ihn in der Webanwendung zu verbreiten. Früher geschah das i.A. über Cross-Site Scripting, heute kommt oft Clickjacking zum Einsatz. Egal welche Methode die Angreifer einsetzen, der Client ist nur der Weg zum Ziel: Wenn ein Benutzer eine vom Wurm bereits befallene Seite, z.B. das Social-Network-Profil eines anderen Benutzers, aufruft, dringt der Wurm über den Browser des Benutzers in dessen Profilseite ein. Früher reichte den Angreifern die bloße Verbreitung des Wurms, inzwischen wird parallel oft auch noch heimlich Werbung angeklickt, so dass die Cyberkriminellen auch finanziell vom Wurm profitieren.
Dann gibt es noch die theoretischen Angriffe:
Ein Angreifer, der den Webclient und damit den Webbrowser unter seiner Kontrolle hat, befindet sich im lokalen Netz und damit hinter der Firewall. Hier kann er nun nach weiteren interessanten Zielen suchen, wofür ihm z.B. ein mit JavaScript realisierter Portscanner zur Verfügung steht. Ob es solche Angriffe auch in der Praxis gibt, ist nicht sicher. Im Rahmen von Massenangriffen sind sie bisher nicht aufgefallen (sie wären dafür wohl auch eher ungeeignet), ob sie im Rahmen gezielter Angriffe zum Einsatz kommen, hat bisher niemand verraten. Die Opfer solcher Angriffe halten sich natürlich mit Informationen darüber, wie sie hereingelegt wurden, zurück, und die Angreifer haben erst Recht keine Veranlassung, ihre Methoden zu verraten.
Ein weiteres mögliches Angriffsziel wurde auf dem 28. Chaos Communication Congress (28C3) Ende Dezember 2011 von Artur Janc vorgestellt: Ein Angreifer, der einen Webclient unter seine Kontrolle bringt, kann darüber alle Aktionen der Webanwendung ausführen, die auch der normale Benutzer ausführen darf. Warum sollten die Angreifer also mühsam die meist gut geschützte Webanwendung auf dem Server angreifen, wenn sie doch genau so gut den oft weniger gut geschützten Webclient angreifen und darüber auf die Webanwendung zugreifen können? Auch dies sind bisher theoretische Überlegungen. O b es wirklich einmal entsprechende Angriffe in the wild
geben wird, bleibt abzuwarten.
In die gleiche Richtung zielt ein weiterer, schon länger diskutierter Angriff: Je intelligenter die Clients werden und je mehr von der Business Logic
der Webanwendung auf den Client ausgelagert wird, desto interessanter wird der für den Angreifer. Eine Manipulation des Clients hat dann direkte Auswirkungen auf den Benutzer und die Webanwendung: Der Benutzer wird zu Aktionen verleitet, die er gar nicht ausführen will, bzw. der eingeschleuste Schadcode führt selbst Aktionen in seinem Namen aus. Ein eher schlechtes Beispiel ist in diesem Zusammenhang das Onlinebanking, das über Schadcode auf dem Client-Rechner angegriffen wird. Diese sog. Man in the Browser
-Angriffe zeigen jedoch, was ein Angreifer über die Manipulation des Clients erreichen kann.
Angriffe wird es immer geben
Aber egal ob Theorie oder Praxis: Generell muss eine sichere Anwendung allen möglichen Angriffen widerstehen. Grundsätzlich gilt: Alles, was Sie einsetzen, um Ihren Benutzern zu nützen, missbrauchen die Angreifer ggf., um Ihnen und Ihren Benutzern zu schaden. Wenn Sie wissen, welche Gefahren drohen, können Sie den Angreifern dabei das Leben so schwer wie möglich machen. Und wie Sie das beim Einsatz von HTML5 erreichen, ist das Thema der folgenden Kapitel.
1 XSS, JavaScript & Co.
In diesem Kapitel dreht sich alles um Cross-Site Scripting, JavaScript und Ähnliches. Das DOM-basierte Cross-Site Scripting gewinnt immer mehr an Bedeutung, und mit Resident XSS
bekommt HTML5 seine eigene XSS-Variante. Weitgehend unabhängig von der Art des XSS erlauben die neuen Tags und Attribute in HTML5 neue Angriffe. Aber es gibt auch zumindest eine gute Nachricht: Das sandbox-Attribut für iframes kann beim Einbinden nicht vertrauenswürdiger Inhalte XSS-Angriffe zumindest erschweren.
1.1 Cross-Site Scripting
Als Cross-Site Scripting (kurz XSS) wird das Einschleusen von bösartigem JavaScript- oder HTML-Code in eine Webseite bezeichnet. Die klassischen Varianten des XSS kennen Sie sicher:
Beim reflektierten XSS wird der Schadcode an die Webanwendung gesendet und von dieser ungeprüft an den Client zurückgeschickt. Für den Angriff muss das Opfer einen präparierten Link anklicken oder ein präpariertes Formular abschicken, in dem der Schadcode enthalten ist (Abbildung 1.1).
Ein klassisches Beispiel war immer die Suchfunktion der Websites: Der gesuchte Begriff wird ungeprüft und ungefiltert auf der Ergebnisseite ausgegeben, beispielsweise nach dem Muster
Ihre Suche nach SUCHBEGRIFF ergab folgendes Ergebnis:
Bei Eingaben wie Hund, Katze, Maus ... passiert genau das, was sich der Entwickler dabei gedacht hat. „Sucht" aber jemand nach dem klassischen XSS-Beispiel
öffnet sich die Alert-Box: Der eingeschleuste JavaScript-Code wird ausgeführt.
Abbildung 1.1: Reflektiertes