Sicher mit dem Sandbox-Attribut
Mit dem in HTML 5 eingeführten sandbox-Attribut können Sie nun externen Code in eingebundenen <iframe>-Elementen in Quarantäne stecken.

- Sicher mit dem Sandbox-Attribut
- Fazit
Ein <iframe>-Element in einer Webseite bindet Inhalte aus einer externen Dokumentquelle ein. Beim Zugriff auf eine Webseite liefert der Browser alle Inhalte ohne weitere Nachfragen an den Benutzer. Dieses Verhalten im Zusammenspiel mit einem <iframe>-Element kann in der aktuellen <ifr...
Ein <iframe>-Element in einer Webseite bindet Inhalte aus einer externen Dokumentquelle ein. Beim Zugriff auf eine Webseite liefert der Browser alle Inhalte ohne weitere Nachfragen an den Benutzer. Dieses Verhalten im Zusammenspiel mit einem <iframe>-Element kann in der aktuellen <iframe>-Implementierung gemäß HTML 4.1 einen automatischen Download bösartiger Malware-Inhalte zur Folge haben. Das sandbox-Attribut des <iframe>-Tags in HTML 5 soll die Sicherheitslücke schließen.Viele Webseiten finanzieren sich durch Werbung, die sie aus externen Quellen mittels JavaScript oder <iframe>-Tags einbinden. Als Website-Betreiber haben Sie keinen Einfluss darauf, was in dem Werbenetzwerk wirklich vor sich geht, zumal sich dort hunderte oder gar tausende verschiedener Agenturen tummeln.Es reicht, wenn sich eines der beteiligten Unternehmen einen Ausrutscher leistet, und schon ist das ganze Werbe-Netzwerk kompromittiert und kann über <iframe>- Elemente in Ihren Webseiten Ihre Besucher unbemerkt mit Malware verseuchen, was ein schlechtes Licht auf Sie wirft.Dafür bedarf es nicht einmal einer Sicherheitslücke auf Ihrem Webserver, denn Sie haben ja die <iframe>-Tags selbst eingebaut. Dabei hinterlassen die bösartigen Aktivitäten der Hacker nicht einmal irgendwelche Spuren in den Log-Dateien Ihres Webservers. Die eigentliche Malware liegt ja außerhalb Ihrer Domain. Die Hacker haben Ihnen ja in dem <iframe>-Tag Kuckucksei untergeschoben.
<iframes> mit sandbox-Attribut
Die Web Hypertext Application Technology Working Group (WHATWG) und das W3C, die gemeinsam an dem HTML5-Entwurf arbeiten, haben sich inzwischen ein neues Attribut für das <iframe>-Element einfallen lassen: sandbox.Das sandbox-Attribut soll Ihnen helfen, externe Inhalte, die Sie in Ihre Webseite einbinden müssen, um Daten wie etwa Werbung zu beziehen, förmlich in ihre Schranken zu weisen und vom Ausführen potenziell sicherheitskritischer Operationen abzuhalten. Alles, was Sie hierzu benötigen, ist dieser Code:
<iframe sandbox src="https://www.
extern.de/nicht-vertrauenswuerdig.
html"></iframe>
und schon sperren Sie in allen Browsern mit Unterstützung für das sandbox-Attribut das Ausführen sicherheitskritischer Operationen aus dem betreffenden <iframe>- Element heraus. Ein Browser mit Unterstützung für das sandbox-Attribut muss beim Antreffen eines <iframe>-Elementes mit der sandbox-Eigenschaft Formulare, Skripte und Plugins deaktivieren.Die restriktive Standardeinstellung können Sie liberaler auslegen, indem Sie bestimmte Berechtigungen wieder explizit freischalten. Das sandbox-Attribut nimmt als Wert eine unsortierte Liste von Freiraum-getrennten Symbolen entgegen. Die zulässigen Werte sind allow-same-origin, allow-top-navigation, allow-forms und allow-scripts.Mittels allow-forms und allow-scripts können Sie Formulare und Skripte aus dem <iframe>-Element heraus verfügbar machen. Zum Beispiel mittels:
<iframe sandbox="allow-scripts
allow-forms" src="https://www.extern.
de/nicht-vertrauenswuerdig.html"></iframe>
erlauben Sie das Ausführen beliebiger Skripte und das Abschicken von Web-Formularen aus dem betreffenden <iframe>- Element heraus. Der Browser wird allerdings nach wie vor das Erzeugen von Popups durch Skripte unterdrücken.Die Beschränkung auf einen eindeutigen Ursprung können Sie mit
allow-same-origin
aufheben. Der Webbrowser muss dafür sorgen, dass Verknüpfungen aus einem <iframe>-Element heraus, welches über die sandbox-Eigenschaft verfügt, nicht auf Inhalte außerhalb dieses Elementes zugreifen können. Mit
allow-topnavigation
erlauben Sie den Inhalten des betreffenden <iframe>-Elementes, durch den Browsing-Kontext der obersten Ebene der Webseite zu navigieren und auf seine DOM-Objekte zuzugreifen.
Ein neuer MIME-Typ
Um die Funktionalität des sandbox-Attributs vollständig auszureizen, sind Sie gut beraten, die betreffenden Dokumente unter Verwendung des MIME-Typs
text/html-sandboxed
bereitzustellen.

Wenn Sie dem Benutzer ein Dokument mit diesem MIME-Typ servieren, werden Ihre Sicherheitsvorgaben respektiert (sofern der Browser das sandbox-Attribut nutzt). Nun könnte der Benutzer aber versuchen, Ihren sandbox-Schutz zu umgehen, indem er zu dem betreffenden Dokument direkt navigiert. Auch daran haben die Erfinder der Spezifikation gedacht. Sollte ein Besucher direkt auf das <iframe>-Element zugreifen wollen, initiiert der Browser ein Download der Datei im Quelltext anstatt sie auszuführen.Dieser Teil der Implementierung funktioniert bereits heute in allen aktuellen Webbrowsern; die Browser schicken sich an, den Quelltext des Dokumentes herunterzuladen statt auszuführen. Nur Google Chrome unterstützt das Rendern von Dokumenten vom MIME-Typ text/html-sandboxed innerhalb eines <iframe>- Elementes.
Mit Vorsicht zu genießen
Das sandbox-Attribut ist aber kein Allheilmittel und bringt nebenbei auch eigene Stolperfallen mit. Wenn Sie für das sandbox- Attribut eines <iframe>-Elementes sowohl den Schlüssel allow-scripts als auch allow-same-origin setzen, können Sie ungeahnt eine Sicherheitslücke eröffnen. Sollte die Webseite, welche das <iframe>-Element beinhaltet, denselben Ursprung wie die darin eingebettete Webseite aufweisen, könnte die Letztere das sandbox-Attribut von dem <iframe>-Element entfernen.
Unterstützung durch Webbrowser
Bisher rühmt sich allerdings nur eine einzige Webbrowserfamilie der Unterstützung für das sandbox-Attribut in HTML 5: Webkit- Browser (einschließlich Google Chrome bereits ab der Version 4.x.) Wenn sich auch die anderen führenden Browser-Hersteller bequemen würden, diese wenig glanzvolle, dafür aber sicherheitskritische Innovation von HTML 5 endlich mal vollständig zu implementieren, ließen sich <iframe>-Elemente gezielter einsetzen. Vor allem Mozilla weigert sich, dem sandbox-Attribut die gehörige Entwicklungszeit zu widmen. Was Browser-Hersteller vernachlässigen, müssen Website-Betreiber mit Sorgfalt und Wachsamkeit kompensieren.