ClockTools-Blog

Entwicklertools

Was ist ein Sandbox-Iframe?

Ein Leitfaden zu den einzelnen Sandbox-Berechtigungen eines Iframes, opaken Ursprüngen, Token-Wechselwirkungen und sichereren HTML-Vorschauen.

Von , Entwickler und Herausgeber | | Geprüft gemäß der Redaktionsrichtlinie von ClockTools

Titelillustration eines Iframes mit Sandbox für ClockTools
Inhaltsverzeichnis

Ein Iframe mit Sandbox ist ein eingebettetes Browserdokument, dessen sandbox-Attribut zusätzliche Einschränkungen vorgibt. Bei einem leeren sandbox-Wert gilt eine restriktive Grundkonfiguration. Einzelne allow-*-Tokens geben nur die benötigten Funktionen frei. Für eine HTML-Vorschau lautet ein möglichst sicherer, nützlicher Ansatz nicht „Vertraue dem Code“, sondern „Gib der Vorschau eine eigene Grenze, gewähre nur die nötigen Berechtigungen und halte Geheimnisse aus dem Experiment heraus“.

Was ändert sich, wenn ein Iframe eine Sandbox erhält?

Ein gewöhnlicher Iframe erstellt einen verschachtelten Browserkontext. Same-Origin-Richtlinie, Berechtigungsrichtlinie, Inhaltssicherheitsrichtlinie und die eigenen Header der Frame-Site sind weiterhin wichtig, aber dem Frame werden nicht automatisch alle Browserfunktionen entzogen.

Hinzufügen sandbox fordert den Browser auf, eine zusätzliche Reihe von Einschränkungen aufzuerlegen. Die WHATWG-HTML-Standard definiert das Attribut als einen ungeordneten, durch Leerzeichen getrennten Satz von Token. Wenn kein Token vorhanden ist, bleibt die entsprechende Sandbox-Einschränkung bestehen. Durch das Hinzufügen eines Tokens wird eine bestimmte Einschränkung aufgehoben.

Diese Richtung kann leicht falsch verstanden werden:

<iframe sandbox srcdoc="<p>Static preview</p>"></iframe>

Dies ist die restriktive Form. Es bedeutet nicht „keine Sandbox-Optionen ausgewählt“. Dies bedeutet, dass die Sandbox aktiv ist und keine ihrer optionalen Funktionen wiederhergestellt wurde.

<iframe
  sandbox="allow-scripts allow-forms"
  srcdoc="<button type='button'>Run</button>">
</iframe>

Diese Version erlaubt Skripte und Formularverhalten, während andere Einschränkungen bestehen bleiben. Das genaue Sicherheitsergebnis hängt immer noch davon ab, woher der Inhalt kommt und was die umgebende Anwendung offenlegt.

Welche Einschränkungen gelten standardmäßig?

Die vollständige Norm ist ausführlicher als eine einzelne Checkliste. Diese Kategorien erklären aber den Großteil des Vorschauverhaltens.

Eingeschränkter BereichWas die restriktive Grundkonfiguration verhindertWarum das für eine Vorschau wichtig sein kann
SkriptausführungJavaScript wird nicht ausgeführtFür statische HTML/CSS-Vorschauen ist dies möglicherweise nicht erforderlich
Absenden von FormularenFormulare können nicht gesendet werdenInteraktive Beispiele benötigen möglicherweise Validierung ohne tatsächliches Absenden
Popups und neue KontexteNeue Fenster und Registerkarten sind eingeschränktVerhindert, dass ein Beispiel Seiten frei erzeugt
Navigation auf oberster EbeneDer Frame kann die Hostseite nicht frei ersetzenVerhindert, dass die Vorschau die Editorseite durch Navigation ersetzt
UrsprungsbehandlungInhalten kann ein eigener opaker Ursprung zugewiesen werdenTrennt Speicher und Same-Origin-Zugriff vom Host
DownloadsDownloads werden ohne entsprechende Erlaubnis blockiertVerhindert standardmäßig, dass ein Beispiel Dateidownloads startet
Modale DialogeAlert-, Confirm- und Prompt-Dialoge sind blockiertEinige Lehrbeispiele verwenden Dialoge, die den Benutzer jedoch unterbrechen

Die MDN-Iframe-Referenz listet die aktuellen Token auf und erklärt, was jedes einzelne wiederherstellt. Überprüfen Sie diese Referenz, anstatt eine alte Tokenliste in eine langlebige Sicherheitskontrolle zu kopieren.

Welche Funktionen geben die üblichen allow-Tokens wieder frei?

Betrachten Sie jedes Token als Entscheidung über eine Berechtigung, nicht als bloßen Komfortschalter.

TokenFreigegebene FunktionFrage vor dem Hinzufügen des Tokens
allow-scriptsJavaScript-AusführungBenötigt diese Vorschau tatsächlich interaktive Funktionen?
allow-formsAbsenden von FormularenKann das Beispiel Daten an ein externes Ziel senden?
allow-modalsalert, confirm, und promptKann ein Dialog Nutzende festhalten oder wiederholt unterbrechen?
allow-popupsErstellung von Popup-Browsing-KontextenIst ein neues Fenster Teil der beabsichtigten Übung?
allow-downloadsStarten von DownloadsSollte Benutzercode lokale Dateien erstellen?
allow-same-originBeibehaltung des normalen Ursprungs der RessourceKönnte dieser Ursprung Berechtigungen oder Speicher mit dem Host teilen?
allow-top-navigation-by-user-activationVom Benutzer initiierte Navigation auf oberster EbeneIst das Verlassen des Editors eine explizite Benutzeraktion?

Einige Token interagieren. Es ist notwendig, sie einzeln zu überprüfen, aber nicht ausreichend. Der Ursprung des gerahmten Dokuments, ggf srcdoc oder eine Remote-URL, die Inhaltssicherheitsrichtlinie des Hosts und jede Nachrichtenbrücke zwischen Frame und übergeordnetem Frame wirken sich alle auf die Grenze aus.

Berechtigungsdiagramm eines Iframes mit Sandbox: Skripte, Formulare und modale Dialoge sind gezielt freigegeben, während Same-Origin-Zugriff eingeschränkt bleibt
Berechtigungsdiagramm eines Iframes mit Sandbox: Skripte, Formulare und modale Dialoge sind gezielt freigegeben, während Same-Origin-Zugriff eingeschränkt bleibt

Das Diagramm beschreibt eine Berechtigungsgrenze. Es wird nicht behauptet, dass ein Tokensatz beliebigen Code unschädlich macht.

Warum ist ein opaker Ursprung wichtig?

Ohne allow-same-originSandbox-Inhalte werden so behandelt, als kämen sie von einem speziellen Ursprung, der die normalen Prüfungen auf denselben Ursprung nicht besteht. Entwickler nennen dies oft einen undurchsichtigen oder einzigartigen Ursprung.

Für eine Inline-Vorschau mit srcdoc ist diese Trennung wertvoll. Die Vorschau kann ein Dokument darstellen, ohne denselben Anwendungsursprung wie die Editorseite zu erhalten. Sie kann nicht einfach auf das DOM des übergeordneten Dokuments oder dessen Same-Origin-Speicher zugreifen, als wäre sie eine weitere Host-Komponente.

Ein opaker Ursprung bedeutet weder „offline“ noch „Netzwerk deaktiviert“. Bei erlaubten Skripten kann Vorschaucode weiterhin Anfragen stellen, die Browserrichtlinien und Ziel zulassen. Er kann CPU und Speicher nutzen, sein eigenes DOM verändern und über bewusst vom Host bereitgestellte Kanäle kommunizieren. Die Grenze schränkt Befugnisse ein, zertifiziert den Code aber nicht.

MDN warnt insbesondere vor Kombinationen allow-scripts und allow-same-origin wenn der eingebettete Inhalt denselben Ursprung hat und sein eigenes Sandbox-Attribut entfernen kann. Die wichtige Lektion ist kontextabhängig: Stellen Sie nicht beide Funktionen wieder her, nur weil ein Beispiel ohne sie fehlschlägt.

Wie konfiguriert die ClockTools-Vorschau ihre Sandbox?

Der live verfügbare HTML-Echtzeiteditor von ClockTools erstellt die Vorschau mit srcdoc. Bei aktiviertem JavaScript lautet der Sandbox-Wert seines Iframes:

allow-scripts allow-forms allow-modals

Die Implementierung verzichtet bewusst darauf allow-same-origin, allow-popups, Top-Navigationsberechtigungen und Download-Berechtigungen. Die Benutzeroberfläche kennzeichnet die Vorschau als Sandbox mit opakem Ursprung, sodass die Entscheidung über den Ursprung sichtbar ist und nicht im Quellcode verborgen bleibt.

Diese Konfiguration unterstützt übliche Lehrbeispiele: Skripte können die Vorschau aktualisieren, Formulare die Browservalidierung und das Absenden demonstrieren, und modale Dialoge können ausgeführt werden. Unbekannter Code wird dadurch nicht vertrauenswürdig. Deshalb fordert der Editor dazu auf, keine Geheimnisse einzugeben und unbekannte Skripte zu prüfen.

Die Seite erfasst außerdem Konsolenmeldungen und bietet einen Bereich zur Dokumentenprüfung. Diese Funktionen machen das Verhalten nachvollziehbar, sind aber keine Sandbox-Berechtigungen. Die Konsole hilft, Fehler zu erklären, verhindert jedoch keine Anfrage. Eine Strukturprüfung kann eine fehlende Beschriftung melden, ersetzt aber keine vollständige Sicherheitsprüfung.

Was zeigte eine Berechtigungsprüfung?

Ich habe das gerenderte Vorschauelement im Live-Arbeitsbereich ClockTools überprüft, anstatt mich nur auf Marketingtext zu verlassen.

PrüfenBeobachteter Live-ZustandBedeutung
Quelle der Vorschausrcdoc Dokument vorhandenDer aktuelle HTML-Code wird direkt in den Iframe eingebettet
Sandbox-Attributallow-scripts allow-forms allow-modalsDrei Funktionen werden wiederhergestellt
Same-Origin-TokenNicht vorhandenDie Vorschau behält einen opaken Ursprung
Beschriftung der Oberfläche„Sandbox mit opakem Ursprung“Die Grenze wird dem Benutzer mitgeteilt
Zusätzliche BereicheKonsole und Prüfungen sichtbarLaufzeit- und Dokument-Feedback sind verfügbar

Der Iframe-Titel lautete „Live HTML preview“. Damit erhält das eingebettete Dokument auch für assistive Technologien eine Beschriftung seines Zwecks.

Diese Inspektion bestätigt die konfigurierte Grenze zu diesem Zeitpunkt. Es beweist nicht, dass jedes mögliche Skript sicher ist, und es ersetzt nicht eine Überprüfung der Nachrichtenbrücke, der Handhabung externer Ressourcen, der Inhaltssicherheitsrichtlinie oder zukünftiger Codeänderungen.

Welche Token-Kombinationen verdienen besondere Vorsicht?

Verwenden Sie eine bedrohungsbasierte Überprüfung anstelle eines universellen Token-Rezepts.

allow-scripts plus allow-same-origin

Diese Kombination kann die Isolation stark schwächen, wenn das eingebettete Dokument denselben Ursprung hat und seine Einbettungsbedingungen beeinflussen kann. Werden beide Funktionen benötigt, stellen Sie nicht vertrauenswürdige Inhalte unter einem bewusst getrennten Ursprung bereit. Prüfen Sie die Möglichkeiten zum Verlassen der Sandbox, statt das Attribut als einzige Grenze zu behandeln.

Formulare plus Netzwerkzugriff

allow-forms gibt das Absenden wieder frei. Skripte und gewöhnliche HTML-Elemente können aber auch auf anderen Wegen Anfragen senden. Geben Sie niemals Zugangsdaten, private Kundendaten oder Bearer-Tokens in eine nicht vertrauenswürdige Vorschau ein und nehmen Sie nicht an, die Sandbox halte sie zurück.

Popups und Verlassen der Sandbox

allow-popups Lässt einen Frame einen neuen Browserkontext öffnen. allow-popups-to-escape-sandbox Lässt den neuen Kontext geerbte Sandbox-Flags vermeiden. Das kann bei einer bewusst isolierten Anzeige oder einem externen Link sinnvoll sein, erweitert aber die Bewertungsoberfläche.

Navigation auf oberster Ebene

Berechtigungen zur Navigation auf oberster Ebene erlauben dem Iframe unter bestimmten Bedingungen, die Hostseite zu ersetzen. Eine Code-Experimentierumgebung benötigt das selten. Gehört Navigation zur Übung, erwägen Sie, das Ziel abzufangen und anzuzeigen, statt der Vorschau Kontrolle über die übergeordnete Seite zu geben.

Was kann eine Sandbox nicht schützen?

Eine Sandbox ist ein Browsermechanismus und keine vollständige Plattform für feindlichen Code.

  • Es hindert einen Benutzer nicht daran, denselben Inhalt direkt außerhalb des Frames zu öffnen.
  • Es ist keine Garantie dafür, dass zulässige Skripte schnell, höflich oder frei von Endlosschleifen sind.
  • Es blockiert nicht automatisch jede Netzwerkanfrage.
  • Es bereinigt weder HTML noch beweist es, dass eine URL sicher ist.
  • Bereits in der Vorschau platzierte Geheimnisse werden nicht gesichert.
  • Es ersetzt nicht die serverseitige Validierung für echte Formulare.
  • Zugänglichkeit, Semantik oder browserübergreifendes Verhalten werden nicht überprüft.
  • Es schützt keinen anderen Dienst, der eine Anfrage aus der Vorschau akzeptiert.

Die Grenze ändert sich auch im Laufe der Zeit, da sich Browser und Standards weiterentwickeln. Das Funktionsverhalten sollte in den Browsern getestet werden, die die Zielgruppe tatsächlich verwendet, und die Token-Liste sollte anhand der aktuellen Spezifikationen überprüft werden.

Wie sollte man eine Browsercode-Vorschau gestalten?

Beginnen Sie mit dem Leeren sandbox Attribut hinzufügen und dann jeweils eine Funktion hinzufügen. Erstellen Sie für jede Ergänzung einen kleinen Akzeptanztest und einen entsprechenden Missbrauchstest.

Aufgabe der NutzendenMinimaler AusgangspunktTesten Sie vor der Veröffentlichung
Rendern Sie statisch HTML und CSSLeeres Sandbox-AttributSkripte, Formulare, Popups und die obere Navigation bleiben blockiert
Bringen Sie DOM-Scripting beiHinzufügen allow-scriptsDas Skript läuft; Host-DOM und Speicher bleiben isoliert
Native Formularvalidierung demonstrierenallow-forms nur erwägen, wenn Absenden erforderlich istUnerwartete Ziele können keine sensiblen Daten empfangen
Dialoge demonstrierenallow-modals vorübergehend hinzufügenWiederholte Dialoge können den Host nicht unbrauchbar machen
Laden Sie benutzergesteuerte ProjekteGetrennter Ursprung und mehrstufige SchutzmaßnahmenSandbox, CSP, Messaging, Ressourcen und Grenzwerte werden gemeinsam überprüft

Halten Sie das Nachrichtenprotokoll des übergeordneten Frames eng. Überprüfen Sie den Absender, die Nachrichtenform und die zulässigen Befehle. Akzeptieren Sie keinen willkürlichen Code oder Navigationsanweisungen über eine allgemeine „Ausführen“-Nachricht, es sei denn, es handelt sich dabei um das explizit isolierte Produkt, das Sie erstellen möchten.

Bieten Sie einen Modus ohne JavaScript für statische Prüfungen an. Ergänzen Sie Stoppen, Zurücksetzen oder Neuladen für außer Kontrolle geratene Beispiele. Zeigen Sie Konsolenfehler an, ohne sensible Daten des übergeordneten Dokuments in den Iframe zu übertragen. Behandeln Sie externe Stylesheets und Skripte als Netzwerkabhängigkeiten, deren Hosts und künftige Inhalte außerhalb der Kontrolle des Editors liegen.

Für ein gezieltes Experiment stellt der Echtzeit-HTML-Editor responsive Breiten, Konsolenerfassung, Prüfungen und den Status seiner Sandbox mit opakem Ursprung bereit. Überführen Sie den Code für Veröffentlichungsarbeiten mit Paketen, Servern, Zugangsdaten, Tests oder Deployment in ein lokales Repository und nutzen Sie einen umfassenderen Entwicklungs- und Sicherheitsprüfungsprozess.

Häufig gestellte Fragen

Was bewirkt das Iframe-Sandbox-Attribut?

Es schränkt das eingebettete Dokument zusätzlich ein. Ein leerer Sandbox-Wert beginnt mit einer restriktiven Grundkonfiguration. Durch Leerzeichen getrennte allow-Tokens geben ausgewählte Funktionen wie Skripte oder Formulare wieder frei.

Bedeutet Sandbox, dass der Iframe vollständig sicher ist?

Nein. Sandboxing schränkt Befugnisse ein, garantiert aber keinen vertrauenswürdigen Code. Es blockiert nicht jede Netzwerkanfrage, verhindert nicht jede Ressourcenerschöpfung, bereinigt HTML nicht automatisch und schützt keine bereits eingegebenen Geheimnisse.

Was ist ein opaker Ursprung in einem Iframe mit Sandbox?

Wenn „allow-same-origin“ nicht vorhanden ist, wird das gerahmte Dokument so behandelt, als hätte es einen speziellen Ursprung, der die normalen Same-Origin-Prüfungen nicht besteht. Dadurch wird verhindert, dass es als derselbe Anwendungsursprung fungiert wie das übergeordnete Element.

Warum ist allow-scripts zusammen mit allow-same-origin riskant?

Bei Inhalten gleichen Ursprungs kann die Wiederherstellung beider Funktionen die Isolation, die die Sandbox bieten sollte, untergraben, einschließlich Szenarien, in denen gerahmter Code die Sandbox entfernen kann. Verwenden Sie einen separaten Ursprung und eine vollständige Bedrohungsüberprüfung, wenn beides erforderlich ist.

Kann ein Sandbox-Iframe Netzwerkanfragen stellen?

Möglicherweise ja. Sandboxing fungiert nicht als universelle Netzwerk-Firewall. Zulässige Skripte und HTML-Ressourcen können weiterhin Anfragen stellen, die die Browserrichtlinie und das Ziel zulassen.

Sollte eine HTML-Experimentierumgebung JavaScript erlauben?

Nur wenn die Aufgabe es erfordert. Eine statische HTML/CSS-Vorschau kann Skripte blockiert lassen. Eine interaktive Experimentierumgebung kann allow-scripts hinzufügen, dabei einen opaken Ursprung beibehalten und Schutzmaßnahmen für Ressourcen, Nachrichten, Zurücksetzen und den Umgang mit Geheimnissen kombinieren.

Über den Autor

Vigneshwaran Vijayakumar

Gründer, Entwickler und Herausgeber von ClockTools | Digital Marketing Manager | Indien

Vigneshwaran ist Ingenieur mit jahrzehntelanger technischer Erfahrung, unter anderem als Digital Marketing Manager in Dubai. Seine Arbeit verbindet Datenanalyse, Suchmaschinenoptimierung, Conversion-Rate-Optimierung, Content-Systeme, visuelle Produktion sowie angewandte KI und maschinelles Lernen. Bei ClockTools nutzt er diese fachübergreifende Erfahrung für spezialisierte Browser-Tools und praxisnahe Leitfäden, die ihre Quellen berücksichtigen.

LinkedIn-Profil