Sicherheits-Sandboxen

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

Clientcomputer können individuelle Dateien mit Code, Inhalt und Daten aus verschiedenen Quellen abrufen, wie beispielsweise externe Websites, lokale Dateisysteme oder installierte AIR-Anwendungen. Die Flash Player- und AIR-Laufzeitumgebungen weisen Codedateien und andere Ressourcen, wie gemeinsam genutzte Objekte, Bitmaps, Sounds, Videos und Datendateien, den Sicherheits-Sandboxen individuell zu, und zwar auf Grundlage ihres Ursprungs beim Laden. In den folgenden Abschnitten werden die von den Laufzeitumgebungen durchgesetzten Regeln beschrieben, die bestimmen, auf welche Elemente Code oder Inhalt, der in einer bestimmten Sandbox ausgeführt wird, zugreifen kann.

Weitere Informationen zur Flash Player-Sicherheit finden Sie im Abschnitt „Sicherheit“ des Flash Player Developer Center unter www.adobe.com/go/devnet_security_de .

Remote-Sandboxen

Die Flash Player- und AIR-Laufzeitumgebungen klassifizieren Elemente (einschließlich SWF-Dateien) aus dem Internet in separate Sandboxes, die der jeweiligen Ursprungsdomäne entsprechen. Beispielsweise werden Elemente, die aus example.com geladen werden, in einer anderen Sicherheits-Sandbox platziert als Elemente, die aus foo.org geladen werden. Standardmäßig ist diesen Dateien der Zugriff auf andere Ressourcen auf ihrem eigenen Server gestattet. Remote-SWF-Dateien kann über explizite Website- und Autorberechtigungen, z. B. URL-Richtliniendateien und die Methode Security.allowDomain() , der Zugriff auf weitere Daten aus anderen Domänen gestattet werden. Weitere Informationen finden Sie unter Kontrolloptionen für Websites (Richtliniendateien) und Kontrolloptionen für Autoren (Entwickler) .

Remote-SWF-Dateien können keine lokalen Daten oder Ressourcen laden.

Weitere Informationen zur Flash Player-Sicherheit finden Sie im Abschnitt „Sicherheit“ des Flash Player Developer Center unter www.adobe.com/go/devnet_security_de .

Lokale Sandboxen

Als lokale Datei werden alle Dateien bezeichnet, die über das Protokoll file: oder einen UNC-Pfad (Universal Naming Convention) referenziert werden. Lokale SWF-Dateien befinden sich in einer der vier folgenden lokalen Sandboxen:

  • Lokale Sandbox mit Dateisystemzugriff (local-with-filesystem) – Aus Sicherheitsgründen platzieren die Flash Player- und AIR-Laufzeitumgebungen alle lokalen Dateien standardmäßig in der Sandbox „local-with-file-system“. Ausführbarer Code in dieser Sandbox kann lokale Dateien lesen (z. B. mit der URLLoader-Klasse). Die Kommunikation mit dem Netzwerk ist jedoch nicht möglich. Der Benutzer kann dann sicher sein, dass die lokalen Daten nicht in das Netzwerk geraten oder auf andere Weise unbefugt freigegeben werden.

  • Lokale Sandbox mit Netzwerkzugriff (local-with-networking) – Beim Kompilieren einer SWF-Datei können Sie angeben, ob diese beim Ausführen als lokale Datei über Netzwerkzugriff verfügt (siehe Einstellen des Sandbox-Typs von lokalen SWF-Dateien ). Diese Dateien werden in der „local-with-networking“-Sandbox platziert. Wenn SWF-Dateien der „local-with-networking“-Sandbox zugewiesen sind, ist kein lokaler Dateizugriff möglich. Dafür können die SWF-Dateien auf Daten aus dem Netzwerk zugreifen. SWF-Dateien in der „local-with-networking“-Sandbox sind jedoch nur dann berechtigt, aus dem Netzwerk abgeleitete Daten zu lesen, wenn durch eine URL-Richtliniendatei oder den Aufruf der Methode Security.allowDomain() Zugriffsrechte für diesen Vorgang erteilt wurden. Für diese Zugriffsrechte muss eine URL-Richtliniendatei den Zugriff auf alle Domänen mittels <allow-access-from domain="*"/> oder Security.allowDomain("*") gewähren. Weitere Informationen finden Sie unter Kontrolloptionen für Websites (Richtliniendateien) und Kontrolloptionen für Autoren (Entwickler) .

  • Lokale vertrauenswürdige Sandbox (local-trusted) – Lokale SWF-Dateien, die als vertrauenswürdig eingestuft sind (durch den Benutzer oder Installationsprogramme), werden in der „local-trusted“-Sandbox abgelegt. Systemadministratoren und Benutzer können eine lokale SWF-Datei auch basierend auf Sicherheitsüberlegungen in eine „local-trusted“-Sandbox verschieben oder daraus entfernen (siehe Kontrolloptionen für Administratoren und Kontrolloptionen für Benutzer ). SWF-Dateien, die der „local-trusted“-Sandbox zugewiesen sind, können mit allen anderen SWF-Dateien interagieren und von allen Speicherorten Daten laden (remote oder lokal).

  • Die Sandbox der AIR-Anwendung – Diese Sandbox enthält Inhalte, die zusammen mit der ausgeführten AIR-Anwendung installiert wurden. Standardmäßig kann Code, der in der Sandbox der AIR-Anwendung ausgeführt wird, auf Code aus einer beliebigen Domäne verweisen (Cross-Scripting). Dateien, die nicht in der Sandbox der AIR-Anwendung enthalten sind, können jedoch nicht per Cross-Scripting auf Code in der Anwendungs-Sandbox verweisen. Standardmäßig können Code und Inhalte in der Sandbox der AIR-Anwendung Inhalte und Daten aus einer beliebigen Domäne laden.

Der Datenaustausch zwischen den Sandboxen „local-with-networking“ und „local-with-filesystem“ sowie zwischen der Sandbox „local-with-filesystem“ und Remote-Sandboxen ist streng verboten. Eine Genehmigung für einen solchen Datenaustausch kann weder von einer in Flash Player ausgeführten Anwendung, noch durch einen Benutzer oder Administrator erteilt werden.

Cross-Scripting zwischen lokalen HTML-Dateien und lokalen SWF-Dateien, z. B. mit der ExternalInterface-Klasse, ist nur dann möglich, wenn sich sowohl die HTML- als auch die SWF-Datei in der „local-trusted“-Sandbox befinden. Der Grund hierfür ist, dass sich die lokalen Sicherheitsmodelle für Browser vom lokalen Sicherheitsmodell von Flash Player unterscheiden.

SWF-Dateien in der „local-with-networking“-Sandbox können keine SWF-Dateien in der „local-with-filesystem“-Sandbox laden. SWF-Dateien in der „local-with-networking“-Sandbox können keine SWF-Dateien in der „local-with-filesystem“-Sandbox laden.

Die AIR-Anwendungs-Sandbox

Die Adobe AIR-Laufzeitumgebung erweitert das Sicherheits-Sandbox-Modell von Flash Player um eine zusätzliche Sandbox, die sogenannte Anwendungs -Sandbox. Dateien, die als Teil einer AIR-Anwendung installiert wurden, werden in die Anwendungs-Sandbox geladen. Für alle anderen von der Anwendung geladenen Dateien gelten Sicherheitseinschränkungen gemäß den Richtlinien des regulären Flash Player-Sicherheitsmodells.

Wenn eine Anwendung installiert wird, werden alle Dateien, die im AIR-Paket enthalten sind, in einem Anwendungsverzeichnis auf dem Computer des Benutzers installiert. Entwickler können im Code über das app:/ -URL-Schema (siehe URI-Schemas ) auf dieses Verzeichnis verweisen. Alle Dateien in der Anwendungsverzeichnisstruktur werden der Anwendungs-Sandbox zugewiesen, wenn die Anwendung ausgeführt wird. Inhalt in der Anwendungs-Sandbox ist mit allen Berechtigungen versehen, die für eine AIR-Anwendung verfügbar sind, darunter auch für die Interaktion mit dem lokalen Dateisystem.

Viele AIR-Anwendungen verwenden nur diese lokal installierten Dateien, um die Anwendung auszuführen. AIR-Anwendungen sind jedoch nicht auf die Dateien im Anwendungsverzeichnis beschränkt; sie können jeden Dateityp von jeder beliebigen Quelle laden. Dazu gehören lokale Dateien auf dem Computer des Benutzers sowie Dateien aus verfügbaren externen Quellen, zum Beispiel von einem lokalen Netzwerk oder aus dem Internet. Der Dateityp hat keinen Einfluss auf Sicherheitsbeschränkungen; geladene HTML-Dateien haben dieselben Sicherheitsberechtigungen wie geladene SWF-Dateien aus derselben Quelle.

Inhalt in der Anwendungs-Sandbox hat Zugriff auf AIR-APIs, auf die Inhalt in anderen Sandboxen nicht zugreifen kann. Zum Beispiel ist die air.NativeApplication.nativeApplication.applicationDescriptor -Eigenschaft, die den Inhalt der Anwendungsdeskriptordatei für eine Anwendung zurückgibt, auf den Inhalt in der Sicherheits-Sandbox der Anwendung beschränkt. Ein weiteres Beispiel einer beschränkten API ist die FileStream-Klasse, die Methoden für das Lesen und Schreiben im lokalen Dateisystem enthält.

ActionScript-APIs, die nur für Inhalt in der Sicherheits-Sandbox der Anwendung zur Verfügung stehen, sind im ActionScript 3.0-Referenzhandbuch für die Adobe Flash-Plattform mit dem AIR-Logo gekennzeichnet. Wenn Sie diese APIs in anderen Sandboxen verwenden, gibt die Laufzeitumgebung eine SecurityError-Ausnahme aus.

Bei HTML-Inhalt (in einem HTMLLoader-Objekt) sind alle AIR-JavaScript-APIs (diejenigen, die über die window.runtime -Eigenschaft verfügbar sind, oder über das air -Objekt, wenn die Datei „AIRAliases.js“ verwendet wird) für Inhalt in der Anwendungs-Sandbox verfügbar. HTML-Inhalt in anderen Sandboxen hat keinen Zugriff auf die window.runtime -Eigenschaft, deshalb kann dieser Inhalt nicht auf die AIR- oder Flash Player-APIs zugreifen.

Für Inhalt, der in der AIR-Anwendungs-Sandbox ausgeführt wird, gelten die folgenden zusätzlichen Einschränkungen:

  • Für HTML-Inhalt in der Anwendungs-Sandbox gibt es Beschränkungen bezüglich der Verwendung von APIs, die Strings dynamisch in ausführbaren Code umwandeln, nachdem der Code geladen wurde. Auf diese Weise wird verhindert, dass die Anwendung ungewollt Code aus anderen Quellen als der Anwendung (zum Beispiel von potenziell unsicheren Netzwerkdomänen) einfügt und ausführt. Ein Beispiel ist die Verwendung der eval() -Funktion. Ausführliche Informationen finden Sie unter Codebeschränkungen für Inhalt in unterschiedlichen Sandboxen .

  • Um mögliche Phishing-Angriffe zu verhindern, werden img -Tags in HTML-Inhalten in ActionScript-TextField-Objekten in SWF-Inhalten in der Anwendungs-Sandbox ignoriert.

  • Inhalt in der Anwendungs-Sandbox kann das asfunction -Protokoll in HTML-Inhalt in ActionScript 2.0-Textfeldern nicht verwenden.

  • SWF-Inhalt in der Anwendungs-Sandbox kann den domänenübergreifenden Cache nicht nutzen. Diese Funktion wurden mit Flash Player 9 Update 3 eingeführt. Damit kann Flash Player Adobe-Plattformkomponenteninhalt zwischenspeichern und bei Bedarf in geladenen SWF-Inhalten wiederverwenden (sodass der Inhalt nicht mehrmals neu geladen werden muss).

Einschränkungen für JavaScript in AIR

Anders als Inhalt in der Anwendungs-Sandbox kann JavaScript-Inhalt in einer anwendungsfremden Sandbox jederzeit die eval() -Funktion aufrufen, um dynamisch generierten Code auszuführen. Es gelten jedoch Einschränkungen für JavaScript, das in einer anwendungsfremden Sicherheits-Sandbox innerhalb von AIR ausgeführt wird. Dazu gehört Folgendes:

  • JavaScript-Code in einer anwendungsfremden Sandbox hat keinen Zugriff auf das window.runtime -Objekt und der Code kann keine AIR-APIs ausführen.

  • Standardmäßig kann Inhalt in einer anwendungsfremden Sandbox keine XMLHttpRequest-Aufrufe verwenden, um Daten aus anderen Domänen als der Domäne, die die Anforderung aufruft, zu laden. Anwendungscode kann anwendungsfremden Inhalten jedoch die Berechtigung dazu gewähren, indem ein allowCrossdomainXHR -Attribut im Frame oder Inlineframe mit dem Inhalt gesetzt wird. Weitere Informationen finden Sie unter Codebeschränkungen für Inhalt in unterschiedlichen Sandboxen .

  • Es gibt Beschränkungen für das Aufrufen der JavaScript-Methode window.open() . Weitere Informationen finden Sie unter Beschränkungen beim Aufrufen der JavaScript-window.open()-Methode .

  • HTML-Inhalte in Remote-Sandboxen (Netzwerk-Sandboxen) können nur CSS-, frame -, iframe - und img -Inhalt aus Remotedomänen (von Netzwerk-URLs) laden.

  • HTML-Inhalt in „local-with-filesystem“-, „local-with-networking“- oder „local-trusted“-Sandboxen kann nur CSS-, frame -, iframe - und img -Inhalte aus lokalen Sandboxen (nicht aus der Anwendung oder aus Netzwerk-URLs) laden.

Ausführliche Informationen finden Sie unter Codebeschränkungen für Inhalt in unterschiedlichen Sandboxen .

Einstellen des Sandbox-Typs von lokalen SWF-Dateien

Ein Endbenutzer oder der Administrator eines Computers kann festlegen, dass eine lokale SWF-Datei als vertrauenswürdig eingestuft wird und ihr somit das Laden von Daten aus allen Domänen (lokal und remote) gestatten. Dies wird in den Verzeichnissen „Global Flash Player Trust“ und „User Flash Player Trust“ festgelegt. Weitere Informationen finden Sie unter Kontrolloptionen für Administratoren und Kontrolloptionen für Benutzer .

Weitere Informationen zu lokalen Sandboxen finden Sie unter Lokale Sandboxen .

Adobe Flash Professional

Sie können eine SWF-Datei so konfigurieren, dass sie entweder der „local-with-filesystem“-Sandbox oder der „local-with-networking“-Sandbox zugewiesen wird, indem Sie die Veröffentlichungseinstellungen des Dokuments im Authoring-Tool festlegen.

Adobe Flex

Sie können eine SWF-Datei so konfigurieren, dass sie entweder der „local-with-filesystem“-Sandbox oder der „local-with-networking“-Sandbox zugewiesen wird, indem Sie das use-network -Flag im Adobe Flex-Compiler festlegen. Weitere Informationen finden Sie unter „About the application compiler options“ im Handbuch Building and Deploying Adobe Flex 3 Applications .

Security.sandboxType-Eigenschaft

Ein Autor einer SWF-Datei kann mit der schreibgeschützten statischen Security.sandboxType -Eigenschaft den Sandbox-Typ ermitteln, dem die Flash Player- oder AIR-Laufzeitumgebung die SWF-Datei zugewiesen hat. Die Security-Klasse enthält Konstanten, die mögliche Werte der Eigenschaft Security.sandboxType darstellen:

  • Security.REMOTE – Die SWF-Datei stammt von einer Internet-URL und kann gemäß den domänenbasierten Sandbox-Regeln verwendet werden.

  • Security.LOCAL_WITH_FILE – Die SWF-Datei ist eine lokale Datei, die der Benutzer nicht als vertrauenswürdig eingestuft hat und die nicht für die Verwendung im Netzwerk veröffentlicht wurde. Die SWF-Datei kann lokale Datenquellen lesen, aber keine Verbindung mit dem Internet herstellen.

  • Security.LOCAL_WITH_NETWORK – Die SWF-Datei ist eine lokale Datei, die der Benutzer als nicht vertrauenswürdig eingestuft hat und die für die Verwendung im Netzwerk veröffentlicht wurde. Die SWF-Datei kann eine Verbindung mit dem Internet herstellen, jedoch keine lokalen Datenquellen lesen.

  • Security.LOCAL_TRUSTED – Die SWF-Datei ist eine lokale Datei, die der Benutzer über den Einstellungsmanager oder eine Flash Player Trust-Konfigurationsdatei als vertrauenswürdig eingestuft hat. Die SWF-Datei kann lokale Datenquellen lesen und eine Verbindung mit dem Internet herstellen.

  • Security.APPLICATION – Die SWF-Datei wird in einer AIR-Anwendung ausgeführt und wurde mit dem Paket (der AIR-Datei) für diese Anwendung installiert. Standardmäßig können Dateien in der Sandbox der AIR-Anwendung auf Dateien aus einer beliebigen Domäne verweisen (Cross-Scripting). Dateien, die nicht in der Sandbox der AIR-Anwendung enthalten sind, können jedoch nicht per Cross-Scripting auf die AIR-Datei verweisen. Standardmäßig können Dateien in der Sandbox der AIR-Anwendung Inhalte und Daten aus einer beliebigen Domäne laden.