2008-08-21 97 views
3

我有一個flex應用程序需要能夠生成和執行JavaScript。當我說這個,我是說我需要執行,我在我的Flex應用程序創建原始的JavaScript(不只是現有的JavaScript方法)從Flex執行JavaScript:此javascript功能是否危險?

我目前通過暴露下面的JavaScript方法這樣做:

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

然後我可以做這樣的事情在Flex中(注:我做的是更爲根本的則在現實Flex應用程序的警告框):

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

我的問題是不施加任何安全隱患,我假設這並不是因爲Flex和JasvaScript全部是ru n客戶端...

有沒有更好的方法來做到這一點?

回答

7

沒有必要使用JavaScript函數,ExternalInterface的第一個參數可以是任何JavaScript代碼,它不一定是函數名(文檔中是這樣說的,但它是錯誤的)。

試試這個:

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

據我所知,我絕對不是黑客,你是完全沒問題的。真的,如果有人想,他們可以利用你的代碼無論如何客戶端,但我不明白他們如何利用JavaScript的服務器端代碼(除非你使用服務器端JavaScript)

0

我看不到這裏讓他們通過調用eval來做任何他們無法做到的事情。如果在這裏介紹安全漏洞,我不會看到它。

1

這不是固有的危險,但是當您將任何用戶提供的數據傳遞給函數時,代碼注入漏洞已經成熟。這很令人擔憂,而且我會避免。我認爲一個更好的方法是隻展示所需的功能,僅此而已。

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