我有一个Flex应用程序,需要生成和执行JavaScript的能力。当我这样说的时候,我的意思是我需要执行我在Flex应用程序中创建的原始JavaScript(而不仅仅是一个现有的JavaScript方法)
我目前通过公开以下JavaScript方法来实现这一点:
function doScript(js){ eval(js);}
然后,我可以在Flex中执行类似的操作(注意:我正在做一些比真实的的Flex应用程序中的警告框更实质性的事情):
ExternalInterface.call("doScript","alert('foo'));
我的问题是,这是否会带来任何安全风险,我假设不会,因为Flex和JasvaScript都运行客户端...
有没有更好的方法?
6条答案
按热度按时间4nkexdtk1#
不需要JavaScript函数,
ExternalInterface
的第一个参数可以是任何JavaScript代码,它不一定是函数名(文档是这么说的,但这是错误的)。试试看:
xu3bshqb2#
这本身并不危险,但是当你将用户提供的数据传递到函数中时,代码注入漏洞的时机就成熟了。这是令人担忧的,也是我要避免的。我认为更好的方法是只公开你 * 需要 * 的功能,仅此而已。
20jt8wwn3#
据我所知,我绝对不是一个黑客,你完全没事。真的,如果有人想,他们可以利用你的代码无论如何客户端,但我不知道他们如何可以利用你的服务器端代码使用javascript(除非你使用服务器端javascript)
iaqfqrcu4#
我看不出这能让他们做任何他们通过调用eval已经做不到的事情。如果这里引入了一个安全漏洞,我看不出。
4c8rllxm5#
还请记住,脚本操作是由语句中的“AllowScriptAccess”标记控制的。如果网页不需要这些操作,它们就不应该允许脚本调用。
http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_16494
kx5bkwkv6#