2008-09-04 84 views
5

我想讓我的用戶在他們的帖子中嵌入他們自己的Flash動畫。通常實際的文件託管在一些免費的圖像託管網站上。除非用戶點擊一個按鈕來播放,否則我不會加載閃光燈(這樣在頁面加載時就不會自動播放)。我知道人們可以在Flash中製作一些非常惱人的垃圾,但是我找不到任何有關潛在嚴重 Flash應用程序可能會導致觀看者受到的損害的任何信息。如何安全地嵌入任何Flash文件(swf)?

從互聯網中嵌入任何Flash文件是不安全的嗎?如果是這樣,我怎麼讓用戶嵌入無辜的動畫,但仍然排除有害的應用程序?

編輯:

據我所知,最明顯的威脅是ActionScript將您重定向到惡意網站。

的Adobe says可以設置的allowScriptAccess =從不allowNetworking =無和SWF應該有本身之外沒有獲得任何東西。 這會解決我所有的問題嗎?

回答

0

是的,這是不安全的。

有沒有簡單的方法來允許它。你可以有一個允許YouTube,Hulu等的域名白名單,但是白名單本質上是很麻煩的 - 你會不斷更新。

3

Flash有一些整齊的安全措施。允許用戶上傳swf到你的站點並嵌入它們是不安全的,你基本上是爲自己設置了一個XSS攻擊。

但是,允許它們進行熱鏈接應該不成問題。 swf將被鎖定到託管它的域,並且不允許在該空間外調用url。

它仍然是「邪惡的聯繫」(我敢肯定他們是適當的詞),並通過我的意思是定期鏈接到它試圖加載yoursite.com/admin/deleteallpages.php 「如」你。然而,它不能以任何方式使用這些數據,它基本上與普通鏈接相同,並且我猜想現代cms可以免受這種類型的攻擊。

您可以通過在不同的子域上託管閃爍來獲得相同的保護,因爲Flash認爲這與完全不同的域相同。

+0

「邪惡鏈接」被稱爲CSRF,跨站請求僞造。 – 2010-12-10 11:14:58

3

當嵌入來源不明的主權財富基金,也扔在裝載機口罩,這樣比預期加載的SWF不能在更多的屏幕房地產採取的最佳做法。

僞代碼這樣做:

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

實際上有多個選項。

爲了完全安全,請設置allowScriptAccess = never和allowNetworking = none,並且swf將無法訪問本身之外的任何內容。

注意:allowNetworking僅適用於Flash Player 9(它是爲響應各種MySpace蠕蟲而創建的),因此您需要使用SWF Object以確保只有具有正確Flash Player版本或更高版本的用戶才能加載Flash 。

但是,如果您想啓用youtube視頻等功能,則無法將allowNetworking設置爲「無」。幸運的是,該字段具有中等安全級別 - 「內部」,可讓SWF與其託管域進行通話。

另請注意,您最好不要在您的網站上有crossdomain.xml文件 - 詳細瞭解這些危險here和其他地方。

這裏是由該進入更詳細的其他的答案中提到的一些其他網站:

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

相關問題