从Flex执行JavaScript:此JavaScript函数危险吗?
时间:2020-03-05 18:41:39 来源:igfitidea点击:
我有一个Flex应用程序,它需要具有生成和执行JavaScript的能力。当我这样说时,我的意思是我需要执行在Flex应用程序中创建的原始JavaScript(而不仅仅是现有的JavaScript方法)
我目前正在通过公开以下JavaScript方法来做到这一点:
function doScript(js){ eval(js);}
然后,我可以在Flex中执行类似的操作(请注意:与实际的Flex应用程序中的警告框相比,我正在执行的操作更重要):
ExternalInterface.call("doScript","alert('foo'));
我的问题是,这是否会带来任何安全风险,我想并不是因为Flex和JasvaScript都运行在客户端...
有一个更好的方法吗?
解决方案
回答
据我所知,而且我绝对不是黑客,我们完全可以。确实,如果有人愿意,他们无论如何都可以在客户端利用代码,但是我看不到他们如何使用javascript利用服务器端代码(除非我们使用服务器端javascript)
回答
我不知道这在哪里可以让他们通过调用eval做他们本来无法做的事情。如果这里引入了安全漏洞,我看不到。
回答
这并不是固有的危险,但是一旦我们将任何用户提供的数据传递到函数中,代码注入攻击就已经成熟。那太令人担忧了,我会避免的。我认为更好的方法是仅公开所需的功能,仅此而已。
回答
不需要JavaScript函数,ExternalInterface
的第一个参数可以是任何JavaScript代码,它不必是函数名(文档中是这样,但这是错误的)。
试试这个:
ExternalInterface.call("alert('hello')");
回答
还请记住,脚本操作由语句中的" AllowScriptAccess"标签控制。如果网页不希望执行这些操作,则它们不应允许脚本调出。
http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_16494