6

我有一个需要能够生成和执行 JavaScript 的弹性应用程序。当我这么说时,我的意思是我需要执行我在 Flex 应用程序中创建的原始 JavaScript(不仅仅是现有的 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

据我所知,我绝对不是黑客,你完全没问题。真的,如果有人愿意,他们无论如何都可以在客户端利用您的代码,但我看不出他们如何使用 javascript 来利用您的服务器端代码(除非您使用服务器端 javascript)

于 2008-08-21T17:03:22.150 回答
0

我看不出这可以让他们做任何他们通过调用 eval 已经不能做的事情。如果这里引入了安全漏洞,我看不到。

于 2008-08-21T17:19:03.157 回答
0

还要记住,脚本操作由语句中的“AllowScriptAccess”标签控制。如果网页不需要这些操作,它们不应该允许调用脚本。

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

于 2008-09-15T14:52:25.563 回答
-1
ExternalInterface.call("eval", "alert('hello');");
于 2016-11-11T17:31:19.713 回答