ユーザーがアップロードしたコンテンツを許可する私がプレイしている Web ゲームでは、navigateToURL 関数を使用してプレーヤーをランダムな Web サイトに送信するという問題が多数発生しています。Actionscript 2 または 3 を使用してこの機能を無効にする方法があるかどうか興味がありました。HTML 埋め込みを使用して無効にする方法を見たことがありますが、Web サイトへの管理アクセス権がありません。
1 に答える
さらに調査を行った結果、確固たる答えにたどり着きました。ユーザーがアップロードしたコンテンツを検証するには、サーバー側で PHP と swfdump という実行可能ファイルを組み合わせて使用する必要があります。
swfdump は、Flex SDK の bin フォルダーにある exe ファイルです。exec を使用して PHP から実行できます。swf のバイトコードを読み取り、レポートを生成します。そこから、navigateToURL() を含むファイルを簡単に見つけて、ファイルを拒否できます。
swfdump -abc -out 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