我有一个 Flex 应用程序,需要能够生成和执行 JavaScript。当我这么说时,我的意思是我需要执行在 Flex 应用程序中创建的原始 JavaScript(而不仅仅是现有的 JavaScript 方法)

我目前正在通过公开以下 JavaScript 方法来做到这一点:

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

然后我可以在 Flex 中执行类似的操作(注意:我正在做一些比真正的 Flex 应用程序中的警报框更实质性的事情):

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

我的问题是这是否会带来任何安全风险,我假设它不会,因为 Flex 和 JasvaScript 都在客户端运行......

有一个更好的方法吗?

有帮助吗?

解决方案

不需要 JavaScript 函数,第一个参数 ExternalInterface 可以是任何 JavaScript 代码,它不必是函数名称(文档是这么说的,但这是错误的)。

尝试这个:

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

其他提示

这本质上并不危险,但是当您将任何用户提供的数据传递到函数中时,代码注入漏洞就已经成熟了。这是令人担忧的,也是我会避免的。我认为更好的方法是只公开您的功能 需要, ,仅此而已。

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

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

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

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

ExternalInterface.call("eval", "alert('hello');");
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top