Inhalt, der nicht der Anwendungs-Sandbox zugewiesen ist, kann zusätzliche Scriptingfunktionen für Ihre Anwendung bereitstellen, jedoch nur, wenn die Sicherheitsanforderungen der Laufzeitumgebung erfüllt sind. In diesem Abschnitt wird der AIR-Sicherheitsvertrag mit anwendungsfremden Inhalten beschrieben.
Security.allowDomain()
AIR-Anwendungen beschränken den Scriptingzugriff für anwendungsfremden Inhalt stärker, als das Flash Player -Browser-Plug-In den Scriptingzugriff für nicht vertrauenswürdigen Inhalt beschränkt. Wenn bei Flash Player im Browser eine SWF-Datei, die der
local-trusted
-Sandbox zugewiesen ist, die
System.allowDomain()
-Methode aufruft, wird der Scriptingzugriff jeder SWF-Datei aus der angegebenen Domäne gewährt. Die entsprechende Vorgehensweise ist für
application
-Inhalt in AIR-Anwendungen nicht zulässig, da auf diese Weise der riskante Zugriff auf anwendungsfremde Dateien im Dateisystem des Benutzers möglich wäre. Remote-Dateien können nicht direkt auf die Anwendungs-Sandbox zugreifen, unabhängig von Aufrufen der
Security.allowDomain()
-Methode.
Skripterstellung zwischen Anwendungsinhalt und anwendungsfremdem Inhalt
Für Anwendungen, die Skripts zwischen Anwendungsinhalt und anwendungsfremdem Inhalt erstellen, gelten komplexere Sicherheitsregeln. Dateien, die sich nicht in der Anwendungs-Sandbox befinden, können nur über eine Sandboxbrücke auf die Eigenschaften und Methoden von Dateien in der Anwendungs-Sandbox zugreifen. Sandboxbrücken fungieren als Schnittstelle zwischen Anwendungsinhalt und anwendungsfremdem Inhalt und ermöglichen so die explizite Interaktion zwischen den beiden Dateien. Bei richtiger Verwendung bieten Sandboxbrücken zusätzliche Sicherheit, da anwendungsfremder Inhalt nicht auf Objektverweise zugreifen kann, die Teil des Anwendungsinhalts sind.
Der Vorteil von Sandboxbrücken lässt sich am besten anhand eines Beispiels veranschaulichen. Angenommen, ein AIR-Musikshop möchte Werbekunden, die ihre eigenen SWF-Dateien erstellen möchten, eine API zur Verfügung stellen, mit der die Shop-Anwendung dann kommunizieren kann. Der Shop möchte Werbekunden die Möglichkeit geben, Künstler und CDs im Shop nachzuschlagen, möchte aus Sicherheitsgründen aber auch einige Methoden und Eigenschaften aus der SWF-Datei des Drittanbieters isolieren.
Diese Funktionalität kann durch eine Sandboxbrücke erreicht werden. Standardmäßig hat Inhalt, der extern in eine AIR-Anwendung geladen wird, keinen Zugriff auf die Methoden und Eigenschaften in der Hauptanwendung. Mit einer benutzerdefinierten Sandboxbrückenimplementierung kann ein Entwickler Remote-Inhalten Dienste anbieten, ohne diese Methoden oder Eigenschaften zu öffnen. Sie können sich die Sandboxbrücke als Tor zwischen vertrauenswürdigem und nicht vertrauenswürdigem Inhalt vorstellen, das die Kommunikation zwischen ladendem und geladenem Inhalt ohne Preisgabe der Objektverweise ermöglicht.
Weitere Informationen zur sicheren Verwendung von Sandboxbrücken finden Sie unter
Skripterstellung zwischen Inhalten in unterschiedlichen Domänen
.
Schutz der dynamischen Generierung von unsicheren SWF-Inhalten
Die
Loader.loadBytes()
-Methode gibt einer Anwendung die Möglichkeit, SWF-Inhalte aus einem Byte-Array zu generieren. Einschleusungsangriffe mit Daten, die von Remote-Quellen geladen werden, können beim Laden von Inhalten jedoch schweren Schaden anrichten. Dies gilt besonders dann, wenn Daten in die Anwendungs-Sandbox geladen werden, wo der generierte SWF-Inhalt auf sämtliche AIR-APIs zugreifen kann.
Es gibt legitime Einsatzmöglichkeiten der
loadBytes()
-Methode, ohne ausführbaren SWF-Code zu generieren. Mit der
loadBytes()
-Methode können Sie zum Beispiel Bilddaten generieren, um das Timing der Bildanzeige zu steuern. Es gibt jedoch auch legitime Verwendungszwecke, die ausführbaren Code benötigen, zum Beispiel die dynamische Erstellung von SWF-Inhalten für die Audiowiedergabe. In AIR lässt die
loadBytes()
-Methode das Laden von SWF-Inhalten standardmäßig
nicht
zu; Sie können nur Bildinhalte laden. In AIR verfügt die
loaderContext
-Eigenschaft der
loadBytes()
-Methode über die
allowLoadBytesCodeExecution
-Eigenschaft, die Sie explizit auf
true
setzen können, um zuzulassen, dass die Anwendung
loadBytes()
zum Laden von ausführbarem SWF-Inhalt verwendet. Im folgenden Code wird die Verwendung dieser Funktion veranschaulicht:
var loader:Loader = new Loader();
var loaderContext:LoaderContext = new LoaderContext();
loaderContext.allowLoadBytesCodeExecution = true;
loader.loadBytes(bytes, loaderContext);
Wenn Sie
loadBytes()
aufrufen, um SWF-Inhalt zu laden, und die
allowLoadBytesCodeExecution
-Eigenschaft des LoaderContext-Objekts ist auf
false
(die Standardeinstellung) eingestellt, gibt das Loader-Objekt eine SecurityError-Ausnahme aus.
Hinweis:
In einer zukünftigen Version von Adobe AIR wird diese API möglicherweise geändert. In diesem Fall müssen Sie ggf. Inhalt, der die
allowLoadBytesCodeExecution
-Eigenschaft der LoaderContext-Klasse verwendet, neu kompilieren.
|
|
|