In Flash Player 7 und früheren Versionen konnten lokale SWF-Dateien (also Dateien, die über einen lokale Pfad vom Dateisystem eines Benutzers geladen werden) uneingeschränkt die meisten Vorgänge durchführen, die normalerweise unter die Sicherheitsregeln von Flash Player fallen. Zum Beispiel: Eine über HTTP geladene SWF-Datei ist standardmäßig nur berechtigt, Text mit XML.load() aus ihrer eigenen Ursprungsdomäne zu laden, während eine lokale SWF-Datei in Flash Player 7 berechtigt war, Text mit XML.load() von jeder HTTP-URL oder jedem Pfad des lokalen Dateisystems zu laden.
Sie können sich das Lesen einer Textdatei von einem lokalen Pfad als Berechtigung namens Lokal lesen vorstellen. Berücksichtigen Sie zudem, dass alle SWF-Dateien in Flash Player 7 die zusätzliche Berechtigung Im Netzwerk senden hatten, mit der alle Daten an jeden Ort im Internet gesendet werden können, beispielsweise über einen HTTP POST-Vorgang mit LoadVars.send(). Die Kombination der Berechtigungen Lokal lesen und Im Netzwerk senden für eine lokale SWF-Datei, die ein Endbenutzer von einer nicht vertrauenswürdigen Quelle heruntergeladen hat, ergibt folgende Situation: Die lokale SWF-Datei könnte auf dem Computer des Benutzers gespeicherte Textdateien lesen und den Inhalt an einen Ort im Internet zurücksenden – und zwar ganz ohne Wissen des Benutzers.
In Flash Player 8 gelten kurz ausgedrückt die folgenden Regeln für lokale SWF-Dateien: Standardmäßig verfügen lokale SWF-Dateien noch über die Berechtigung Lokal lesen, aber nicht mehr über die Berechtigung Im Netzwerk senden. Sie sind also nicht berechtigt, mit dem Internet (oder einem HTTP-Server) zu kommunizieren. Durch Ändern einer Einstellung in der SWF-Datei kann der Flash-Autor der SWF-Datei die Berechtigung Im Netzwerk senden erteilen, wobei jedoch die Berechtigung Lokal lesen verloren geht. Schließlich haben Autoren und Benutzer noch die Möglichkeit, Flash Player so zu konfigurieren, dass eine SWF-Datei den vertrauenswürdigen Status erhält. Dadurch verfügt die SWF-Datei über beide Berechtigungen, also genau dieselben Berechtigungen wie in Flash Player 7.
Zwei Faktoren bestimmen, welcher Flash-Inhalt von diesen Änderungen betroffen ist: ob es sich um lokalen Inhalt handelt und in welchem Flash Player-Typ der Inhalt ausgeführt wird.
Betroffen sind SWF-Dateien, die von lokalen Pfaden geladen werden. Dazu gehören unter anderem die folgenden URL-Beispiele:
Die Auswirkungen auf die verschiedenen Flash Player-Typen richten sich nach unterschiedlichen Bedingungen:
In Flash Player 8 werden alle SWF-Dateien (und HTML-Dateien zum Zweck des SWF-HTML-Scripting) in einer von vier Sandboxen platziert:
Zu diesem Zeitpunkt kann es hilfreich sein, die Diagramme im Anhang einzusehen, die die lokale Sicherheit veranschaulichen (siehe Lokale Sicherheit – Diagramme*).
Wenn eine lokale SWF-Datei Zugriff auf das Internet (oder einen HTTP-Server im Intranet) benötigt, kommen zwei lokale Sandboxen in Frage. Die Sandbox Lokal mit Netzwerk lässt sich einfacher umsetzen, und alle erforderlichen Konfigurationsdaten sind in der SWF-Datei selbst integriert. Die Sandbox Lokal vertrauenswürdig ist zwar leistungsstärker und bietet mehr Berechtigungen, doch ist der Umsetzungsaufwand höher, und die Konfigurationsdaten sind nicht in der SWF-Datei selbst enthalten. Nachdem die Regeln für die lokale Sicherheit ausführlich beschrieben wurden, befasst sich der Rest dieses Artikels mit der Frage, welche der beiden Alternativen geeignet ist.
Da lokale Dateien in Flash Player 8 nicht mehr über uneingeschränkte Berechtigungen verfügen, können Situationen auftreten, in denen den lokalen Dateien explizit Flash-Berechtigungen erteilt werden können. Dies wird im nächsten Abschnitt erläutert.
Im Allgemeinen gilt in Flash Player das Prinzip, dass zur Erteilung von Berechtigungen für lokale Dateien globale Berechtigungen erforderlich sind. Wenn eine Remote-SWF-Datei beispielsweise zum Scripting für eine SWF-Datei in der Sandbox Lokal mit Netzwerk zur Verfügung stehen möchte, muss sie System.security.allowDomain("*") aufrufen. So erhalten andere geladene SWF-Dateien die Möglichkeit, die Remote-SWF-Datei zum Scripting zu verwenden. Flash Player bietet keine Möglichkeit, die Berechtigung nur lokalen Dateien zu erteilen, sondern die Berechtigung kann nur allen Dateien erteilt werden. Grund hierfür ist, dass Flash Player den Ursprung einer lokalen Datei nicht bestimmen kann – die Datei kann theoretisch von überall her stammen. Deshalb ist es nicht empfehlenswert, einer lokalen Datei die Berechtigung zum Ausführen einer Aktion zu erteilen, es sei denn, der Ursprungsort der Datei ist nicht von Interesse.
Sie sollten System.security.allowDomain("*") nur aufrufen, wenn die jeweilige SWF-Datei keine vertraulichen Daten enthält. Rufen Sie System.security.allowDomain("*") nicht als allgemeine Lösung für Sicherheitsprobleme auf, da so Sicherheitsmaßnahmen verloren gehen, die für Ihren Inhalt möglicherweise sehr wichtig sind! Bevor Sie globale Berechtigungen erteilen, sollten Sie sich genau überlegen, welche Auswirkungen dies hat.