2012-06-25 102 views
1

我玩的網頁遊戲允許用戶上傳的內容與使用navigateToURL函數將玩家發送到隨機網站的用戶有很多問題。我很好奇是否有方法使用Actionscript 2或3禁用此功能。我已經看到了一種使用HTML嵌入的方法,但我沒有對該網站的管理訪問權限。Actionscript 3.0禁用navigateToURL

+0

描述利用更多的有關使用字節碼

的更多信息?或者是由最終用戶造成的代碼。用戶內容的文件類型是什麼?> –

+0

好的,網站允許用戶上傳圖片或.swf文件。這些上傳可以作爲傢俱,「玩具」,寵物或化身放入房間。遊戲本身是基於Flash的,所以房間是一個Flash客戶端。上傳的.swfs可以運行Actionscript,它允許人們在查看房間的所有客戶端上簡單地運行navigateToURL。大多數目標都被阻塞了,但有一些目標被繞過了,所以我需要一種方法來將一個.swf文件輸入到一個僅僅阻止該函數工作的房間中。 – Zoltea

回答

1

在做了一些更多的研究之後,我想出了一個可靠的答案: 您應該在服務器端使用PHP和名爲swfdump的可執行文件的組合來驗證用戶上傳的內容。

swfdump是一個位於Flex SDK的bin文件夾中的exe文件。你可以使用exec從PHP運行它。 它將讀取swf的字節碼並生成報告。從那裏你可以很容易地找到哪些文件包含navigateToURL()並拒絕這些文件。

我測試使用我自己的文件swfdump -abc退房手續myfilereport.swfx myfile.swf 並且在輸出我發現這一點:

 findpropstrict flash.net:navigateToURL 
     findpropstrict flash.net:URLRequest 
     pushstring  "http://www.plasticsturgeon.com" 
     constructprop flash.net:URLRequest (1) 
     callproperty flash.net:navigateToURL (1) 

我使用URL爲「HTTP:// www.plasticsturgeon.com」。但是要消除包含flash.net.navigateToURL的任何swf將會更加容易。一旦您確定存在,您可以向最終用戶生成錯誤通知。

所以使用這種方法,你可以找到並拒絕任何使用導航到URL的swf。你甚至可以創建一個批處理來運行,並使這個問題的任何現有斷言無效。重定向做用戶必須點擊: http://code.google.com/p/redtamarin/wiki/ABC

而關於反編譯ASbytecode: http://dougmccune.com/flex/FOTB_Decompiling_Doug_McCune.pdf