apache-flex 从Flex执行JavaScript:这个javascript函数危险吗?

n6lpvg4x  于 2022-11-01  发布在  Apache
关注(0)|答案(6)|浏览(130)

我有一个Flex应用程序,需要生成和执行JavaScript的能力。当我这样说的时候,我的意思是我需要执行我在Flex应用程序中创建的原始JavaScript(而不仅仅是一个现有的JavaScript方法)
我目前通过公开以下JavaScript方法来实现这一点:

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

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

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

我的问题是,这是否会带来任何安全风险,我假设不会,因为Flex和JasvaScript都运行客户端...
有没有更好的方法?

4nkexdtk

4nkexdtk1#

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

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

xu3bshqb2#

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

20jt8wwn

20jt8wwn3#

据我所知,我绝对不是一个黑客,你完全没事。真的,如果有人想,他们可以利用你的代码无论如何客户端,但我不知道他们如何可以利用你的服务器端代码使用javascript(除非你使用服务器端javascript)

iaqfqrcu

iaqfqrcu4#

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

4c8rllxm

4c8rllxm5#

还请记住,脚本操作是由语句中的“AllowScriptAccess”标记控制的。如果网页不需要这些操作,它们就不应该允许脚本调用。
http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_16494

kx5bkwkv

kx5bkwkv6#

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

相关问题