2008-08-21 3 views
3

私は、JavaScriptを生成し実行する能力を必要とするフレックスアプリケーションを持っています。私はこれを言うとき、私は私が私のFlexアプリケーション(だけでなく、既存のJavaScriptメソッド)で作成した生のJavaScriptを実行する必要があるわけFlexからJavaScriptを実行する:このjavascriptの機能は危険ですか?

私は現在、次のJavaScriptの方法を暴露することによって、これをやっている:

function doScript(js){ eval(js);} 
私は、Flexでこのような何かを行うことができます

ExternalInterface.call("doScript","alert('foo')); 

私の質問は、私は

と仮定しています、これはどのようなセキュリティ上のリスクを課すんされています(注:私は、より実質的な何か、その後、実際のFlexアプリケーションでの警告ボックスをしています)それはFlexとJasvaScriptがすべてru以来ではないクライアント側...

これを行うより良い方法はありますか?

答えて

7

JavaScript関数は必要ありません。ExternalInterfaceの最初の引数は任意のJavaScriptコードにすることができます。関数名でなくてもかまいません(ドキュメントにはそうだが間違っている)。

はこれを試してみてください:

ExternalInterface.call("alert('hello')"); 
0

私が知る限り、私は間違いなくハッカーではありません、あなたは完全に素晴らしいです。実際には、誰かがしたいと思っていれば、クライアント側のコードを悪用する可能性がありますが、JavaScriptを使用してサーバー側のコードを悪用する方法はわかりません(サーバーサイドのJavaScriptを使用しない限り)。

0

私は彼らはevalを呼び出すことですでにできなかったことをすべて実行できます。ここにセキュリティホールが導入されていると、私はそれを見ません。

1

これは本質的に危険ではありませんが、ユーザが提供するデータを関数に渡すと、コードインジェクションの悪用が熟しています。それは気になるもので、私は避けるべきものです。私は、より良いアプローチは、が必要であることだけを公開することになると思う。など。

0

は、スクリプトのアクションは声明で「のAllowScriptAccess」タグによって制御されていることも忘れないでください。 Webページでこれらのアクションが必要ない場合は、スクリプトからの呼び出しを許可しないでください。

http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_16494

-1
ExternalInterface.call("eval", "alert('hello');"); 
関連する問題