从 Flex 执行 JavaScript:这个 JavaScript 函数危险吗?
-
09-06-2019 - |
题
我有一个 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');");