Sicheres Arbeiten mit nicht vertrauenswürdigen Inhalten

Adobe AIR 1.0 und höher

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.