6

JavaScript を生成して実行する機能を必要とするフレックス アプリケーションがあります。これは、既存の JavaScript メソッドだけでなく、Flex アプリケーションで作成した未加工の JavaScript を実行する必要があることを意味します。

私は現在、次の JavaScript メソッドを公開することでこれを行っています。

function doScript(js){ eval(js);}

次に、Flex で次のようなことを行うことができます (注: 実際の Flex アプリのアラート ボックスよりも実質的なことを行っています)。

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

Flex と JasvaScript はすべてクライアント側で実行されるため、セキュリティ上のリスクはないと思います...

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

4

6 に答える 6

8

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

これを試して:

ExternalInterface.call("alert('hello')");
于 2008-08-21T17:43:48.543 に答える
1

これは本質的に危険ではありませんが、ユーザー提供のデータを関数に渡した瞬間に、コード インジェクション エクスプロイトの機が熟します。それは気になることであり、私が避けたいことです。より良いアプローチは、必要な機能のみを公開し、それ以上のものは公開しないことだと思います。

于 2008-08-21T17:24:41.800 に答える
0

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

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

于 2008-09-15T14:52:25.563 に答える
0

eval を呼び出すことによってまだ実行できなかったことが、どこで実行できるようになるのかわかりません。ここに導入されているセキュリティ ホールがある場合、私にはわかりません。

于 2008-08-21T17:19:03.157 に答える
0

私が知る限り、そして私は間違いなくハッカーではありません。あなたはまったく問題ありません。本当に、誰かが望むなら、とにかくクライアント側であなたのコードを悪用することができますが、javascriptを使用してサーバー側のコードを悪用する方法がわかりません(サーバー側のjavascriptを使用しない限り)

于 2008-08-21T17:03:22.150 に答える