ClockTools-Blog

Entwicklertools

Was ist ein Sandbox-Iframe?

Eine funktionsspezifische Anleitung zu Iframe-Sandboxing, undurchsichtigen Ursprüngen, Token-Interaktionen und einem sichereren HTML-Vorschaudesign.

Von , Entwickler und Herausgeber | | Bewertet unter der ClockTools redaktionelle Richtlinie

Sandboxed Iframe vorgestellte Illustration für ClockTools
Inhaltsverzeichnis

Ein Sandbox-Iframe ist ein eingebettetes Browserdokument mit zusätzlichen Einschränkungen, die von den Iframes angewendet werden Sandkasten Attribut. Mit einem leeren Sandkasten Wert, der Browser startet von einer restriktiven Grundlinie; individuell erlauben-* Token geben nur die Funktionen zurück, die der eingebettete Inhalt benötigt. Für eine HTML-Vorschau ist das sicherste nützliche Design nicht „dem Code vertrauen“. Es geht darum, „der Vorschau eine separate Grenze zu geben, die Mindestberechtigungen hinzuzufügen und Geheimnisse aus dem Experiment herauszuhalten.“

Was ändert sich, wenn ein Iframe in einer Sandbox gespeichert wird?

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 Sandkasten 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:

```html

<iframe sandbox srcdoc="<p>Statische Vorschau</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.

```html

<iframe

sandbox="allow-scriptsallow-forms"

srcdoc="<button type='button'>Ausführen</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?

Der vollständige Standard enthält mehr Details als eine Checkliste, aber diese Kategorien erklären die meisten Vorschauverhalten.

SperrgebietWas die restriktive Grundlinie verhindertWarum eine Vorschau wichtig sein könnte
SkriptausführungJavaScript wird nicht ausgeführtFür statische HTML/CSS-Vorschauen ist dies möglicherweise nicht erforderlich
FormulareinreichungFormulare können nicht gesendet werdenInteraktive Beispiele müssen möglicherweise ohne echte Einreichung validiert werden
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 eine Vorschau den Editor stört
UrsprungsbehandlungInhalten kann ein eindeutiger undurchsichtiger Ursprung zugewiesen werdenTrennt Speicher und Same-Origin-Zugriff vom Host
DownloadsDownloads werden ohne entsprechende Erlaubnis blockiertVerhindert standardmäßig, dass ein Beispiel Dateien initiiert
ModalitätenWarnung, Bestätigung und Aufforderung 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.

Was ermöglichen die allgemeinen Wiederherstellungstokens?

Betrachten Sie jeden Token als eine Fähigkeitsentscheidung und nicht als einen Komfortschalter.

TokenFähigkeit wiederhergestelltFrage, die Sie stellen sollten, bevor Sie sie hinzufügen
Allow-SkripteJavaScript AusführungBenötigt diese Vorschau wirklich Verhalten?
Formulare zulassenFormulareinreichungKann das Beispiel Daten an ein externes Ziel senden?
ZulassungsmodalitätenAlarm, bestätigen, und AufforderungKann ein Dialog den Benutzer abfangen oder wiederholt unterbrechen?
Popups zulassenErstellung von Popup-Browsing-KontextenIst ein neues Fenster Teil der beabsichtigten Übung?
Downloads zulassenDownload-EinleitungSollte Benutzercode lokale Dateien erstellen?
gleichen Ursprung zulassenBeibehaltung des normalen Ursprungs der RessourceKönnte dieser Ursprung Berechtigungen oder Speicher mit dem Host teilen?
Top-Navigation durch Benutzeraktivierung zulassenVom 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.

Fähigkeitsdiagramm, das einen Sandbox-IFrame mit Skripten, Formularen und Modalitäten zeigt, die selektiv wiederhergestellt werden, während der Zugriff auf denselben Ursprung eingeschränkt bleibt
Fähigkeitsdiagramm, das einen Sandbox-IFrame mit Skripten, Formularen und Modalitäten zeigt, die selektiv wiederhergestellt werden, während der Zugriff auf denselben Ursprung eingeschränkt bleibt

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

Warum ist ein undurchsichtiger Ursprung wichtig?

Ohne gleichen Ursprung zulassenSandbox-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 srcdoc Vorschau, diese Trennung ist wertvoll. Die Vorschau kann ein Dokument rendern, ohne dass es als derselbe Anwendungsursprung wie die Editorseite behandelt wird. Es kann nicht einfach auf das übergeordnete DOM zugreifen oder den Speicher desselben Ursprungs lesen, als wäre es eine weitere Komponente des Hosts.

Undurchsichtiger Ursprung bedeutet nicht „offline“ oder „Netzwerk deaktiviert“. Wenn Skripte zulässig sind, kann der Vorschaucode weiterhin Netzwerkanfragen stellen, die die Browserrichtlinien und das Ziel zulassen. Es kann CPU und Speicher nutzen, sein eigenes DOM manipulieren und über Kanäle kommunizieren, die der Host bewusst offenlegt. Die Grenze reduziert die Autorität; Der Code wird dadurch nicht zertifiziert.

MDN warnt insbesondere vor Kombinationen Allow-Skripte und gleichen Ursprung zulassen 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?

Das Leben ClockTools Echtzeit-Editor HTML Erstellt die Vorschau mit srcdoc. Wenn JavaScript aktiviert ist, lautet der Iframe-Sandbox-Wert:

Erlaube-Skripte, Erlaube-Formulare, Erlaube-Modale

Die Implementierung verzichtet bewusst darauf gleichen Ursprung zulassen, Popups zulassen, Top-Navigationsberechtigungen und Download-Berechtigungen. Die Benutzeroberfläche kennzeichnet die Vorschau als Undurchsichtiger SandkastenDadurch wird die Ursprungsentscheidung sichtbar gemacht, anstatt sie im Quellcode zu verbergen.

Diese Konfiguration unterstützt gängige Lehrbeispiele: Skripte können die Vorschau aktualisieren, Formulare können Browservalidierung und Übermittlungsverhalten ausüben und modale Beispiele können ausgeführt werden. Es wandelt unbekannten Code nicht in vertrauenswürdigen Code um. Die eigene Anleitung des Herausgebers fordert Benutzer daher auf, Geheimnisse zu vermeiden und unbekannte Skripte zu überprüfen.

Die Seite erfasst auch Konsolenmeldungen und stellt ein Fenster zur Dokumentenprüfung bereit. Dabei handelt es sich um Beobachtbarkeitsfunktionen, nicht um Sandbox-Berechtigungen. Ein Konsolenfenster hilft bei der Erklärung eines Fehlers. es verhindert nicht eine Anfrage. Eine strukturelle Prüfung kann ein fehlendes Etikett aufdecken; Es wird keine vollständige Sicherheitsüberprüfung durchgeführt.

Was hat ein Fähigkeitscheck ergeben?

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

ÜberprüfenBeobachteter Live-ZustandBedeutung
Vorschau der Quellesrcdoc Dokument vorhandenDer aktuelle HTML wird direkt in den Frame eingebettet
Sandbox-AttributErlaube-Skripte, Erlaube-Formulare, Erlaube-ModaleDrei Funktionen werden wiederhergestellt
Token mit gleichem UrsprungAbwesendDie Vorschau behält einen undurchsichtigen Ursprung
Schnittstellenetikett„undurchsichtiger Sandkasten“Die Grenze wird dem Benutzer mitgeteilt
StützplattenKonsole und Prüfungen sichtbarLaufzeit- und Dokument-Feedback sind verfügbar

Der Iframe-Titel lautete „Live HTML-Vorschau“, was der unterstützenden Technologie auch eine Zweckbezeichnung für das eingebettete Dokument verleiht.

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-Skripte plus gleichen Ursprung zulassen

Dieses Paar kann die Isolierung erheblich schwächen, wenn das eingebettete Dokument denselben Ursprung hat, und seine Einbettungsbedingungen beeinflussen. Wenn beides erforderlich ist, stellen Sie nicht vertrauenswürdige Inhalte von einem bewusst separaten Ursprung bereit und analysieren Sie die Fluchtwege, anstatt das Attribut als einzige Grenze zu betrachten.

Formulare plus Netzwerkzugriff

Formulare zulassen stellt die Übermittlung wieder her, aber Skripte und gewöhnliche HTML-Elemente können Anfragen auch auf andere Weise senden. Geben Sie niemals Zugangsdaten, private Kundendaten oder Inhabertokens in eine nicht vertrauenswürdige Vorschau ein und gehen Sie davon aus, dass die Sandbox sie enthält.

Popups plus Escape-Verhalten

Popups zulassen Lässt einen Frame einen neuen Browserkontext öffnen. Erlaube-Popups-zu-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.

Top-Navigation

Top-Navigationsberechtigungen ermöglichen es dem Frame, unter definierten Bedingungen die Hostseite zu ersetzen. Ein Code-Spielplatz braucht das selten. Wenn die Navigation Teil der Lektion ist, sollten Sie erwägen, das Ziel abzufangen und anzuzeigen, anstatt die Vorschausteuerung für die Seite der obersten Ebene zu gewähren.

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 Sandkasten Attribut hinzufügen und dann jeweils eine Funktion hinzufügen. Erstellen Sie für jede Ergänzung einen kleinen Akzeptanztest und einen entsprechenden Missbrauchstest.

LeserjobMinimaler AusgangspunktTesten Sie vor der Veröffentlichung
Rendern Sie statisch HTML und CSSSandkasten leerenSkripte, Formulare, Popups und die obere Navigation bleiben blockiert
Bringen Sie DOM-Scripting beiHinzufügen Allow-SkripteSkriptausführungen, Host-DOM und Speicher bleiben isoliert
Demonstrieren Sie die native FormularvalidierungÜberlegen Sie Formulare zulassen nur wenn eine Vorlage erforderlich istUnerwartete Ziele können keine sensiblen Daten empfangen
Dialoge demonstrierenHinzufügen Zulassungsmodalitäten vorübergehendWiederholte Dialoge können den Host nicht unbrauchbar machen
Laden Sie benutzergesteuerte ProjekteSeparater Ursprung plus mehrschichtige SteuerelementeSandbox, 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 JavaScript-Aus-Modus für die statische Inspektion an. Fügen Sie Steuerelemente zum Stoppen, Zurücksetzen oder Neuladen für außer Kontrolle geratene Beispiele hinzu. Oberflächenkonsolenfehler ohne Spiegelung vertraulicher übergeordneter Daten in den Frame. Behandeln Sie externe Stylesheets und Skripte als Netzwerkabhängigkeiten, deren Hosts und zukünftige Inhalte außerhalb der Kontrolle des Herausgebers liegen.

Für ein gezieltes Experiment ist die Echtzeit-HTML-Editor macht reaktionsfähige Breiten, Konsolenerfassung, Prüfungen und seinen undurchsichtigen Sandbox-Status verfügbar. Für Release-Arbeiten, die Pakete, Server, Anmeldeinformationen, Tests oder Bereitstellungen betreffen, verschieben Sie den Code in ein lokales Repository und verwenden Sie einen umfassenderen Entwicklungs- und Sicherheitsüberprüfungs-Workflow.

Häufig gestellte Fragen

Was bewirkt das Iframe-Sandbox-Attribut?

Es wendet zusätzliche Einschränkungen auf das gerahmte Dokument an. Ein leerer Sandbox-Wert beginnt bei der restriktiven Grundlinie, während durch Leerzeichen getrennte Zulassungstoken ausgewählte Funktionen wie Skripte oder Formulare wiederherstellen.

Bedeutet Sandboxed, dass der Iframe völlig sicher ist?

Nein. Sandboxing reduziert die Autorität, garantiert jedoch nicht, dass der Code vertrauenswürdig ist, jede Netzwerkanfrage blockiert, die Erschöpfung von Ressourcen verhindert, HTML bereinigt oder in der Vorschau platzierte Geheimnisse schützt.

Was ist ein undurchsichtiger Ursprung in einem Sandbox-Iframe?

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 sind Allow-Skripte 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 ein HTML-Spielplatz JavaScript zulassen?

Nur wenn der Leserauftrag es benötigt. Ein statischer HTML/CSS-Viewer kann Skripte blockieren. Ein interaktiver Spielplatz kann Zulassungsskripte hinzufügen und gleichzeitig eine undurchsichtige Ursprungs- und Schichtressourcen-, Nachrichten-, Zurücksetzungs- und Geheimverwaltungssteuerung beibehalten.

Über den Autor

Vigneshwaran Vijayakumar

Gründer, Entwickler und Herausgeber von ClockTools | Digitaler Marketingmanager | Indien

Vigneshwaran ist ein Ingenieur mit jahrzehntelanger technischer Erfahrung, einschließlich beruflicher Tätigkeit 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 setzt er diese multidisziplinäre Erfahrung in gezielte Browser-Dienstprogramme und praktische, quellenbewusste Leitfäden um.

LinkedIn-Profil