2008-09-04 12 views
5

Ich möchte meinen Benutzern erlauben, eigene Flash-Animationen in ihre Beiträge einzubetten. Normalerweise wird die eigentliche Datei auf einigen kostenlosen Bild-Hosting-Sites gehostet. Ich würde den Flash nicht wirklich laden, wenn der Benutzer nicht auf eine Schaltfläche klickt, um zu spielen (so dass beim Laden der Seite nichts automatisch abgespielt wird). Ich weiß, dass Leute einen wirklich nervigen Mist im Flash machen können, aber ich kann keine Informationen über das Potential seriöser Schaden finden, den eine Flash-App dem Zuschauer verursachen könnte.Wie kann man Flash-Dateien (swf) sicher einbetten?

Ist es unsicher, nur eine Flash-Datei aus dem Internet einzubetten? Wenn ja, wie kann ich zulassen, dass Nutzer unschuldige Animationen einbetten, aber trotzdem schädliche Apps fernhalten?

edit:

Von dem, was ich sammeln kann, die offensichtlichste Bedrohung für Actionscript ist, dass Sie auf eine bösartige Website zu umleiten.

Adobe says Sie allowScriptAccess = nie und allowNetworking = keine und die swf sollte außerhalb von selbst keinen Zugriff auf alles haben, einstellen. Wird dies alle meine Probleme lösen?

Antwort

0

Ja, es ist unsicher.

Es gibt keine einfache Möglichkeit, dies zuzulassen. Du könntest eine Domain-Whitelist haben, die YouTube, Hulu usw. erlaubt, aber Whitelisting ist von Natur aus mühsam - du würdest ständig updaten.

3

Flash verfügt über einige ordentliche Sicherheitsmaßnahmen. Wenn Sie Benutzern erlauben, SWFs auf Ihre Site hochzuladen und sie einzubetten, ist das nicht sicher. Sie stellen sich im Grunde genommen auf einen XSS-Angriff ein.

Die Hotlink-Verbindung sollte jedoch kein Problem darstellen. Der swf wird für die Domäne gesperrt, die ihn hostet, und darf keine URLs außerhalb dieses Bereichs aufrufen.

Es wird immer noch offen sein für "böse Links" (ich bin sicher, Theres ein passendes Wort für sie), und damit meine ich regelmäßige Links zu yoursite.com/admin/deleteallpages.php, die es versucht zu laden "wie du. Es wird jedoch nicht in der Lage sein, diese Daten in irgendeiner Weise zu verwenden, es wird im Grunde dasselbe wie eine normale Verbindung sein, und ich würde annehmen, dass moderne cms vor dieser Art von Angriffen geschützt sind.

Sie könnten den gleichen Schutz erhalten, indem Sie Ihre Flashs auf einer anderen Subdomain hosten, da Flash dies als eine komplett andere Domain ansieht.

+0

"böse Links" sind CSRF genannt, Cross-Site-Request-Forgery. –

3

Wenn SWF-Dateien aus unbekannten Quellen Einbettung ist es auch am beste Praxis, eine Maske auf dem Loader zu werfen, so dass die geladene SWF nicht über mehr Bildschirm Immobilien nehmen als erwartet.

Pseudo-Code zu tun, so:

var maskSpr : Sprite = new Sprite(); 
maskSpr.graphics.beginFill(); 
maskSpr.graphics.drawRect(0,0,safeWidth,safeHeight); 
maskSpr.graphics.endFill(); 
myLdr.mask = maskSpr; 
2

Es tatsächlich mehr als eine Option ist.

Um absolut sicher zu sein, setze allowScriptAccess = never und allowNetworking = none und die swf hat keinen Zugriff auf irgendetwas außerhalb ihrer selbst.

HINWEIS: allowNetworking ist nur in Flash Player 9 (es wurde als Antwort auf verschiedene Myspace-Würmer erstellt), so müssen Sie SWF Object verwenden, um sicherzustellen, dass nur Benutzer mit der richtigen Flash-Player-Version oder besser den Flash geladen haben .

Wenn Sie jedoch Dinge wie Youtube-Videos aktivieren möchten, können Sie "allowNetworking" nicht auf "none" setzen. Glücklicherweise gibt es ein mittleres Sicherheitsniveau für dieses Feld - "intern", mit dem die SWF mit ihrer gehosteten Domain kommunizieren kann.

Beachten Sie auch, dass Sie besser keine crossdomain.xml-Datei auf Ihrer Website haben - lesen Sie mehr über diese Gefahren here und anderen Orten.

Hier sind einige andere Websites, die von anderen Antworten erwähnt werden, die mehr ins Detail gehen:

http://www.adobe.com/devnet/flashplayer/articles/secure_swf_apps_04.html

http://blogs.adobe.com/stateofsecurity/2007/07/how_to_restrict_swf_content_fr_1.html