Schnelltipp Ein Handbuch zu domänenübergreifenden Richtliniendateien

Jeder Flash- oder Flex-Entwickler, der auf Remote-Ressourcen zugreifen musste, stößt irgendwann auf eine Richtliniendatei crossdomain.xml. In diesem Artikel wird beschrieben, was diese Richtliniendateien sind, wie sie funktionieren und wie Sie eine solche erstellen können.

Beispiel

Schauen wir uns ein Beispiel an, worüber wir reden:

Was ist das Besondere daran? Nun, die SWF lädt das Smiley-Bild von http://mytestgae.appspot.com/images/smiley.jpg, nicht von der Activetuts + -Domäne. Ohne eine domänenübergreifende Richtliniendatei würde beim Versuch, das Image zu laden, ein SecurityError ausgelöst.


Was ist eine domänenübergreifende Richtliniendatei??

Das Sicherheitsmodell, das als "Same Origin" -Richtlinie bekannt ist und von den meisten modernen Web-Browsern implementiert wird, verhindert, dass auf bestimmte Inhaltstypen zugegriffen wird, wenn die Datei in einer anderen Domäne vorhanden ist. Es ist keine feste Regel. HTML-Seiten zeigen gerne Bilder und HTML von Seiten anderer Domains an. Bei JavaScript verhindert jedoch dieselbe Ursprungsrichtlinie, dass ein Dokument oder Skript, das von einem Ursprung geladen wird, die Eigenschaften eines Dokuments von einem anderen erhält oder einstellt.

Flash enthält eine ähnliche Sicherheitsrichtlinie, die im Allgemeinen verhindert, dass eine Flash-Anwendung auf Daten zugreifen kann, die in einer Remote-Domäne gehostet werden. Es gibt jedoch viele Situationen, in denen es nicht nur nützlich ist, sondern auch erwartet wird, dass auf die Ressourcen remote zugegriffen wird. Ein Online-Fotoalbum wäre eingeschränkt, wenn externe Anwendungen seine Bilder nicht herunterladen könnten. Es wäre auch dumm, wenn ein Web-Service externen Anwendungen nicht erlaubt, mit ihm zu interagieren.

Aus diesem Grund ist es möglich, eine XML-Datei namens crossdomain.xml zu erstellen, die angibt, wie auf eine Domäne in einer Domäne gehostet werden kann, die in einer Remote-Domäne gehostet wird. In den meisten Fällen sind diese Richtliniendateien recht einfach, es gibt jedoch einige Details, die Sie beachten sollten.

Wenn Sie Inhalte hosten, auf die externe Flash-Anwendungen zugreifen sollen, müssen Sie eine crossdomain.xml-Datei erstellen. Beginnen wir mit einem grundlegenden Beispiel.


Schritt 1: Eine grundlegende crossdomain.xml-Datei

Hier ist eine sehr einfache crossdomain.xml-Datei. Wenn diese Datei im Stammverzeichnis Ihrer Domäne gehostet wird, gewährt sie externen Flash-Anwendungen Zugriff auf alle Ressourcen in Ihrer Domäne.

    

Die Richtliniendatei enthält eine einzige Etikett. Innerhalb dieses können Sie null oder mehr haben Stichworte. Jeder Mit tag können Sie eine Domäne oder IP-Adresse definieren, von der aus eine Flash-Anwendung auf die lokalen Ressourcen zugreifen kann. Das Attribut domain = "*" gibt an, dass alle Domänen Zugriff haben. Dies ist dem Sternchen-Platzhalter zu verdanken, der hier verwendet wird, um alle Domänen und IP-Adressen abzugleichen.

Für die meisten Situationen ist diese Richtliniendatei "Alle zulassen" ausreichend. Flash-Anwendungen haben Zugriff auf alle öffentlichen Ressourcen. Durch die vorhandenen Sicherheitsfunktionen (wie kennwortgeschützte Seiten) wird jedoch verhindert, dass Flash-Anwendungen auf vertrauliche Daten zugreifen.

(Beachten Sie, dass Sie keine crossdomain.xml-Datei in Ihrer Domäne ablegen können, in der SWF-Dateien auch in Ihrer Domäne auf Remote-Dateien zugreifen können Ein weiterer Domain!)


Schritt 2: Angegebene Domänen

Wenn Sie keinen globalen Zugriff auf Ihre öffentlichen Ressourcen zulassen möchten, müssen Sie das Domänenattribut in der Tag kann verwendet werden, um Zugriff auf bestimmte Domänen zu gewähren.

Sie können eine Domäne vollständig angeben. Das folgende Beispiel gibt Zugriff auf Flash-Anwendungen, die in der Domäne www.example.com gehostet werden.

Sie können den Sternchen-Platzhalter verwenden, um die Domains abzugleichen, die mit dem angegebenen Suffix enden. Hier gewähren wir Zugriff auf Flash-Anwendungen auf den Domains example.com, www.example.com, egal was.example.com etc.


Schritt 3: Angegebene IP-Adressen

Sie können den Zugriff nach IP-Adresse angeben, genauso wie Sie Zugriff auf Flash-Anwendungen gewähren können, die in angegebenen Domänen gehostet werden. Das gleiche Tag und die gleichen Attribute werden verwendet, außer in diesem Fall verwenden Sie eine IP-Adresse:


Schritt 4: Arbeiten mit HTTPS

Standardmäßig kann eine auf einem HTTPS-Server gehostete Flash-Anwendung nur auf Ressourcen auf Remote-HTTPS-Servern zugreifen. Angesichts des Overheads, den HTTPS einem Server hinzufügen kann, möchten Sie ihn möglicherweise nicht verwenden. In diesem Fall setzen Sie die sichern zuschreiben falsch ermöglicht einer Flash-Anwendung auf einem HTTPS-Server den Zugriff auf Daten von einem HTTP-Server.


Schritt 5: Remote Flash-Anwendungen

Was ist, wenn Sie nicht möchten, dass Remote-Flash-Anwendungen auf Ihre Daten zugreifen? Sie können entweder eine crossdomain.xml-Datei erstellen, die keine enthält Stichworte:

  

Oder Sie haben einfach keine crossdomain.xml-Datei.


Schritt 6: Granulare Steuerung von Unterverzeichnissen

Eine domänenübergreifende Richtliniendatei steuert den Zugriff auf das Verzeichnis und alle darunter liegenden Unterverzeichnisse. Wenn Sie eine Richtliniendatei "Alle zulassen" in Ihrem Domänenstamm ablegen, können Sie auf Ihre gesamte Domäne zugreifen. Es kann jedoch Situationen geben, in denen Sie nur den Zugriff auf ein bestimmtes Unterverzeichnis zulassen möchten.

Bei den neuesten Versionen des Flash Players sind dafür zwei XML-Dateien erforderlich. Zunächst müssen Sie eine crossdomain.xml-Datei im Stammverzeichnis Ihrer Domäne platzieren, in der Flash zusätzliche domänenübergreifende Richtliniendateien in den Unterverzeichnissen verarbeiten kann. Dies geschieht mit der Etikett. Im folgenden Beispiel setzen wir das zulässige domänenübergreifende Richtlinien zuschreiben alles, Dies bedeutet, dass die domänenübergreifenden Richtliniendateien, die möglicherweise in den Unterverzeichnissen vorhanden sind, verarbeitet werden. Dieses Verhalten ist eine Änderung in Flash Player 9 Update 3 und höher. Bisher wurden Richtliniendateien in Unterverzeichnissen standardmäßig verarbeitet, ohne dass das festgelegt werden musste zulässige domänenübergreifende Richtlinien Attribut.

Beachten Sie, dass wir keine hinzugefügt haben tags, dh wenn keine zusätzlichen crossdomain.xml-Dateien in den Unterverzeichnissen vorhanden sind, haben ferne Flash-Anwendungen keinen Zugriff auf die Ressourcen auf diesem Server.

Weitere Informationen zu den Meta-Richtlinienoptionen finden Sie in diesem Artikel.

   

Als Nächstes platzieren Sie eine crossdomain.xml-Datei in dem Unterverzeichnis, das Sie steuern möchten.

Um ein Beispiel dafür zu sehen, checken Sie diese Datei aus. Diese Richtliniendatei im Stammverzeichnis der Domäne http://mytestgae.appspot.com/ verwendet die Tag, um die Steuerung an alle crossdomain.xml-Dateien zu delegieren, die möglicherweise in den Unterverzeichnissen vorhanden sind. Dann gewährt diese Richtliniendatei im / images / -Unterverzeichnis vollen Zugriff auf das Verzeichnis und das darunter liegende Unterverzeichnis. So kann eine entfernte Flash-Anwendung wie folgt auf das Smiley-Bild im Verzeichnis images zugreifen:

      

Der Zugriff auf das Smiley-Bild im Verzeichnis / images-restricted / ist jedoch nicht zulässig, da sich im Verzeichnis mit den eingeschränkten Bildern keine Datei crossdomain.xml befindet, die den (fehlenden) Zugriff überschreibt, den die Datei crossdomain.xml in der Datei gewährt Wurzel der Domäne. Wenn Sie den folgenden Code ausführen, wird eine Ausnahme ausgelöst:

      

Die Ausnahme lautet:
SecurityError: Fehler # 2123: Verletzung der Sicherheits-Sandbox: LoaderInfo.content: file: /// D | /CrossDomain.swf kann nicht auf http://mytestgae.appspot.com/images-restricted/smiley.jpg zugreifen. Keine Richtliniendateien haben Zugriff gewährt.
at flash.display :: LoaderInfo / get content ()
bei MethodInfo-635 ()


Schritt 7: Domänenübergreifende Richtlinie vs. Firewall

Aus den obigen Informationen sieht es also so aus, als könnten domänenübergreifende Richtliniendateien verwendet werden, um den Zugriff auf Flash-Anwendungen, die nicht in Ihrer eigenen Domäne gehostet werden, effektiv zu beschränken. Obwohl dies der Fall ist, sollten Sie sich nicht auf eine domänenübergreifende Richtliniendatei verlassen, um den Zugriff auf vertrauliche Informationen zu beschränken. Flash kann zwar eine Richtliniendatei crossdomain.xml berücksichtigen, andere Plattformen wie PHP dagegen nicht. Suchen Sie nach PHP Flash Proxy, um zu sehen, was ich meine. Durch die Verwendung eines Proxys können Sie auf alle öffentlich verfügbaren Daten zugreifen, unabhängig von domänenübergreifenden Richtliniendateien. Und Sie müssen nicht einmal für einen PHP-Server zahlen. Wie ich in einem zukünftigen Artikel demonstrieren werde, kann Google App Engine als Proxy ohne Vorabkosten verwendet werden.

Unter dem Strich bieten domänenübergreifende Richtliniendateien die Möglichkeit, selektiv Zugriff auf lokale Ressourcen durch Flash-Remoteanwendungen zu gewähren, jedoch nur, wenn sich alle an die Regeln halten. Wenn Sie sicherstellen möchten, dass Ihre privaten Daten privat bleiben, gibt es keinen Ersatz für eine Firewall.


Fazit

Der Umgang mit domänenübergreifenden Richtliniendateien muss nicht kompliziert sein. Wenn Sie die Grundlagen ihrer Funktionsweise verstanden haben, können Sie ganz einfach den Zugriff auf Ihre Daten durch Flash-Remote-Anwendungen gewähren oder einschränken. Seien Sie sich jedoch bewusst, dass sie nicht so sicher sind, wie es zunächst scheinen mag.

Ich hoffe, Ihnen hat dieser Quick Tip gefallen, vielen Dank für das Lesen!