Über HTML5 wird zurzeit viel geredet, doch mit den vielen Neuerungen die HTML5 bringt
ergeben sich auch neue Möglichkeiten die für bösartige Zwecke genutzt werden können.
Hinzu kommt das nicht alle Browser die neuen HTML5 Tags gleich interpretieren,
was z.B. beim XSS (Cross-site Scripting) dazu führt das diese Art des Angriffs in manchen Browser möglich ist, und in anderen eben nicht.
Cross-site Scripting
HTML5 bringt eine ganze Reihe an neuen HTML Tags, allerdings auch neue Attribute für bereits bekannte Tags. Diese sorgen für viele neue Möglichkeiten Javascript Code einzuschleusen und zur Ausführung zu bringen. Beispielsweise ist es nun auch erlaubt in schließende Tags Attribute einzufügen. : </a onmouseover=”alert(‘XSS’)”>
Eine Liste von möglichen Angriffen enthält das HTML5 Security Cheat Sheet
Generell empfiehlt es sich, sofern möglich, mit einer Whitelist-Lösung für zulässige Eingaben zu Arbeiten um das Risiko neuer XSS Schwachstellen durch neue Attribute oder Tags zu verkleinern
Local Storage
Eine weitere Neuheit die HTML5 bringt ist die als Local Storage oder Web Storage bezeichnete Funktionalität, mit der es möglich ist 5-10MB Anwendungsdaten clientseitig pro Domain zu Speichern. Auch wenn diese Funktionalität sehr viele und mit Sicherheit auch sehr nützliche Möglichkeiten für neuartige Webanwendungen bietet darf, natürlich auch hier nicht die Sicherheit vernachlässigt werden.
Beim Local Storage sollte man sich darüber im Klaren sein das wenn sich verschiedene Benutzer eine Host-Namen teilen, diese auch auf alle Daten zugreifen können, da sie einen gemeinsamen Speicher verwenden. Es gibt keine Möglichkeit die Zugriffe auf bestimmt Pfadnamen o.ä. zu beschränken.
Ein weiteres Problem ist die Erkennung von Angriffen, auf lokale Daten können diese nicht wie es z.B. auf dem Server möglich wäre erkannt und verhindert werden.
SQL Injection
Dachte man bei dem Thema SQL Injection bisher an Serverseitige Schwachstellen sollte man mit HTML5 darauf achten das eine SQL Datenbank als lokaler Speicher für Anwendungsdaten auf dem Client zum Einsatz kommen kann. Bei den SQL Anfragen sollte wie allseits bekannt darauf verzichtet werden die Anfrage aus ungeprüfter Verkettung von Strings zu erstellen. Auch hier sollte auf Prepared Statements zurückgegriffen werden dessen Nutzung durch die HTML Database API erleichtert wird. Wie bei allen von außen kommenden Daten ist darauf zu achten das Serverseitig immer eine Prüfung der vom Client kommenden Daten stattfinden. Auch wenn diese Daten vor der Speicherung auf dem Client schon geprüft wurden, kann nicht davon ausgegangen werden das Clientseitig keine Manipulation der Daten vorgenommen wurde.
WebSocket
Durch die Möglichkeit mit HTML5 eine Netzwerkverbindung aus dem Browser heraus aufzubauen, könnte durch eingeschleusten Schadcode beispielsweise eine Hintertür geöffnet werden. Der Local Storage oder die lokalen Datenbanken könnten für das Zwischenspeichern für die ausgespähten Daten dienen und so der Benutzer langfristig ausgespäht werden.
Je mehr Funktionen der Browser bereitstellt, desto mehr Möglichkeiten gibt es interessante Webanwendungen zu realisieren. Das man bei der Realisierung darauf achten muss keine Schwachstellen einzubauen sollte jedem Entwickler sowieso schon klar sein. Wird für die Realisierung HTML5 eingesetzt gilt es nun noch die neuen Funktionen genauso abzusichern wie der herkömmliche Teil der Anwendungen schon abgesichert wurde. Geht man bei der Implementierung neuer HTML5 Webanwendungen sorgfältig vor, liefert man Angreifern keine zusätzlichen Angriffpunkte sondern kann durch die weiteren Sicherheitsfunktionen die HTML5 mitbringt seine bestehenden Anwendungen sogar noch sicherer machen.
