Eingabehilfen

Inhalt

Sicherheitsänderungen in Flash Player 8

Lokale Sicherheit – Grundlagen

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.

Betroffener Inhalt

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:

  • c:\temp\my.swf
  • file:///c|/temp/my.swf
  • /temp/my.swf
  • file:///temp/my.swf
  • \\server\share\my.swf
  • file:////server/share/my.swf
  • Relative URLs, die von lokalen SWF-Dateien geladen werden

Die Auswirkungen auf die verschiedenen Flash Player-Typen richten sich nach unterschiedlichen Bedingungen:

  • Die Webbrowser-Player (ActiveX-Steuerelement und Plug-In-Player) erzwingen die Regeln für die lokale Sicherheit grundsätzlich bei der Verwendung in einem Webbrowser.
  • Die Webbrowser-Player erzwingen die Regeln für die lokale Sicherheit nicht immer, wenn es sich bei der Anwendung nicht um einen Browser handelt. Wenn Sie mit einer Anwendung arbeiten, in der einer dieser Player eingebettet ist, lesen Sie den Abschnitt "Flash Player-Einbettung und lokale Sicherheit".
  • Die eigenständigen Player erzwingen die Regeln für die lokale Sicherheit.
  • Flash-Projektoren, die in der Authoring-Anwendung Macromedia Flash und in den eigenständigen Playern erstellt werden können, erzwingen die Regeln für die lokale Sicherheit nicht. Grund hierfür ist, dass es sich um ausführbare Anwendungen handelt, bei denen die Benutzer im Allgemeinen wissen, dass besondere Vorsicht geboten ist.
  • Die Authoring-Player in Flash erzwingen die Regeln für die lokale Sicherheit nicht, da sie nur zum Testen des Inhalts in der Entwicklungsphase verwendet werden, nicht zum Wiedergeben von Inhalt aus dem Internet.

Sandbox-Typen

In Flash Player 8 werden alle SWF-Dateien (und HTML-Dateien zum Zweck des SWF-HTML-Scripting) in einer von vier Sandboxen platziert:

  • Remote. Alle Dateien, die nicht von lokalen URLs stammen, werden in einer Remote-Sandbox platziert. Es gibt zahlreiche solche Sandboxen, und zwar je eine für jede Internet- oder Intranet-Domäne, von der Dateien geladen wurden. Diese Sandboxen wurden in Flash Player 6 eingeführt und haben sich in Flash Player 8 nicht geändert.
  • Lokal mit Dateisystem. Dies ist die Standard-Sandbox für lokale Dateien in Flash Player 8. SWF-Dateien in dieser Sandbox haben keine Möglichkeit, mit dem Internet (oder HTTP-Servern) zu kommunizieren. Beispielsweise können sie HTTP-URLs nicht an loadMovie(), getURL() oder XML.load() übergeben. Da diese Vorgänge in Flash Player 7 zulässig waren, funktioniert älterer Inhalt möglicherweise nicht mehr wie beabsichtigt, wenn eine SWF-Datei der Version 7 oder einer früheren Version nach einem Upgrade von Flash Player 7 auf Flash Player 8 versucht, auf das Internet zuzugreifen. In diesem Fall weist Flash Player 8 den Endbenutzer in einem Warndialogfeld darauf hin, dass der Versuch, mit dem Internet zu kommunizieren, fehlgeschlagen ist. Dieses Warndialogfeld enthält eine Schaltfläche, über die der Benutzer auf den Einstellungsmanager zugreifen und dem jeweiligen Inhalt den Status Lokal vertrauenswürdig zuweisen kann (siehe unten).
  • Lokal mit Netzwerk. SWF-Dateien in dieser Sandbox können über HTTP kommunizieren, aber nicht von lokalen Dateisystemen lesen. SWF-Dateien jeder Version können sich über ein Flag in der SWF-Datei selbst in diese Sandbox platzieren, so dass keine Benutzerinteraktion erforderlich ist, um eine SWF-Datei in diese Sandbox zu platzieren. Das Flag kann über die Veröffentlichungseinstellungen in Flash 8 oder über das Programm Local Content Updater* eingestellt werden, ein kostenloses Dienstprogramm für die SWF-Nachbearbeitung, das unter macromedia.com erhältlich ist.
  • Lokal vertrauenswürdig. Für diese Sandbox gelten keine Einschränkungen. Sie bietet dieselben Berechtigungen, über die alle lokalen Dateien in Flash Player 7 verfügten. Durch Autorisierung des Endbenutzers kann jede lokale Datei in dieser Sandbox platziert werden. Diese Autorisierung kann auf zwei verschiedene Arten erfolgen: interaktiv über den Einstellungsmanager oder nicht interaktiv über ein ausführbares Installationsprogramm, das Flash Player-Konfigurationsdateien auf dem Computer des Benutzers erstellt.

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.

Globale Berechtigungen

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.