Überblick über die Sicherheit der Flash-Plattform

Flash Player 9 und höher, Adobe AIR 1.0 und höher

Ein Großteil des Sicherheitsmodells, das von Flash Player und AIR-Laufzeitumgebungen verwendet wird, basiert auf der Ursprungsdomäne für geladene SWF-Dateien, HTML-Dateien, Medien und andere Elemente. Ausführbarer Code in einer Datei aus einer bestimmten Internetdomäne, beispielsweise www.example.com, kann immer auf alle Daten aus dieser Domäne zugreifen. Diese Daten werden in der gleichen Sicherheitsgruppe abgelegt, die auch als Sicherheits-Sandbox bezeichnet wird. (Weitere Informationen finden Sie unter Sicherheits-Sandboxen .)

Beispielsweise kann ActionScript-Code in einer SWF-Datei andere SWF-Dateien, Bitmap-, Audio- und Textdateien sowie andere Daten aus der eigenen Domäne laden. Darüber hinaus ist jederzeit ein Cross-Scripting zwischen SWF-Dateien aus der gleichen Domäne zulässig, sofern beide Dateien mit ActionScript 3.0 geschrieben wurden. Beim Cross-Scripting kann der Code in einer Datei auf die Eigenschaften, Methoden und Objekte zugreifen, die vom Code in einer anderen Datei definiert sind.

Cross-Scripting wird jedoch nicht zwischen SWF-Dateien unterstützt, von denen eine mit ActionScript 3.0 und die andere mit früheren Versionen von ActionScript geschrieben wurde. Diese Dateien können jedoch über die LocalConnection-Klasse miteinander kommunizieren. Weiterhin ist ein Cross-Scripting zwischen einer SWF-Datei und mit ActionScript 3.0 geschriebenen SWF-Dateien aus anderen Domänen standardmäßig untersagt. Der Zugriff kann jedoch durch einen Aufruf der Methode Security.allowDomain() in der geladenen SWF-Datei ermöglicht werden. Weitere Informationen finden Sie unter Cross-Scripting .

Standardmäßig gelten die folgenden allgemeinen Sicherheitsrichtlinien:

  • Ressourcen in der gleichen Sicherheits-Sandbox können immer aufeinander zugreifen.

  • Ausführbarer Code in Dateien in einer Remote-Sandbox kann nie auf lokale Dateien und Daten zugreifen.

In den Flash Player- und AIR-Laufzeitumgebungen gelten die folgenden Domänen als individuelle Domänen, für die jeweils einzelne Sicherheits-Sandboxen eingerichtet werden:

  • http://example.com

  • http://www.example.com

  • http://store.example.com

  • https://www.example.com

  • http://192.0.34.166

Auch wenn eine benannte Domäne, wie http://example.com, einer bestimmten IP-Adresse zugeordnet werden kann (z. B. http://192.0.34.166), richten die Laufzeitumgebungen jeweils separate Sicherheits-Sandboxen ein.

Es gibt zwei allgemeine Methoden, über die der Entwickler einer SWF-Datei Zugriff auf Datenelemente gewähren kann, die sich in anderen Sandboxen als die SWF-Datei befinden:

In den Sicherheitsmodellen der Flash Player- und AIR-Laufzeitumgebungen wird zwischen dem Laden von Inhalten und dem Extrahieren oder Abrufen von Daten unterschieden. Als Inhalt werden Medien bezeichnet, darunter visuelle Medien, die die Laufzeitumgebungen anzeigen können, sowie Audio, Video oder SWF- oder HTML-Dateien mit angezeigten Medien. Daten sind Elemente, auf die definitionsgemäß nur über Code zugegriffen werden kann. Inhalte und Daten werden auf unterschiedliche Weise geladen.

  • Laden von Inhalt: Sie können Inhalt mit Klassen wie Loader, Sound und NetStream laden, über MXML-Tags bei Verwendung von Flex oder über HTML-Tags in einer AIR-Anwendung.

  • Extrahieren von Daten: Sie können Daten aus geladenen Medien mithilfe von Bitmap-Objekten, der Methoden BitmapData.draw() und BitmapData.drawWithQuality() , der Eigenschaft Sound.id3 oder der Methode SoundMixer.computeSpectrum() extrahieren. Die drawWithQuality -Methode ist in Flash Player 11.3 und höher sowie AIR 3.3 und höher verfügbar.

  • Zugreifen auf Daten: Sie können direkt auf Daten zugreifen, indem Sie diese mittels Klassen, wie URLStream, URLLoader, FileReference, Socket und XMLSocket, aus einer externen Datei (z. B. einer XML-Datei) laden. AIR bietet zusätzliche Klassen zum Laden von Daten, wie beispielsweise FileStream und XMLHttpRequest.

Das Flash Player-Sicherheitsmodell definiert unterschiedliche Richtlinien für das Laden von Inhalten und den Zugriff auf Daten. Im Allgemeinen gelten weniger Einschränkungen für das Laden von Inhalten als für den Zugriff auf Daten.

Normalerweise können Inhalte (SWF-Dateien, Bitmaps, MP3-Dateien und Videos) von allen Speicherorten geladen werden. Befindet sich der Inhalt jedoch in einer anderen Domäne als der ladende Code oder Inhalt, wird er in einer separaten Sicherheits-Sandbox partitioniert.

Für das Laden von Inhalten gelten nur wenige Einschränkungen:

  • Standardmäßig werden lokale SWF-Dateien (Dateien, die nicht aus dem Netzwerk, sondern z. B. von der Festplatte des Benutzers geladen werden) in der „local-with-filesystem“-Sandbox (local-with-filesystem) klassifiziert. Dateien in dieser Sandbox können keine Inhalte aus dem Netzwerk laden. Weitere Informationen finden Sie unter Lokale Sandboxen .

  • Real-Time Messaging Protocol-Server (RTMP) können den Zugriff auf Inhalte einschränken. Weitere Informationen finden Sie unter Über RTMP-Server bereitgestellte Inhalte .

Handelt es sich bei dem geladenen Medium um eine Grafik, Audio oder Video, kann eine SWF-Datei, die sich nicht in der gleichen Sicherheits-Sandbox befindet, nur auf die Daten (z. B. Pixel- und Sounddaten) zugreifen, wenn die Domäne dieser SWF-Datei in der Ursprungsdomäne der Medien in eine URL-Richtliniendatei aufgenommen wurde. Weitere Informationen finden Sie unter Zugriff auf geladene Medien als Daten .

Weitere Formen von geladenen Daten sind z. B. Text- oder XML-Dateien, die mit einem URLLoader-Objekt geladen werden. Auch in diesem Fall muss der Zugriff auf Daten in einer anderen Sicherheits-Sandbox mittels einer URL-Richtliniendatei in der Ursprungsdomäne genehmigt werden. Weitere Informationen finden Sie unter Verwenden von URLLoader und URLStream .

Hinweis: Richtliniendateien sind grundsätzlich nicht erforderlich, damit Code, der in der AIR-Anwendungs-Sandbox ausgeführt wird, Remote-Inhalt oder -Daten laden kann.