2008-08-21 23 views
3

JavaScript oluşturma ve çalıştırma özelliğine sahip esnek bir uygulama var. Bunu derken benim Flex uygulamasında oluşturmak ham JavaScript (sadece varolan JavaScript yöntemi) yürütmek için ihtiyaç anlamınaJavaScript'i Flex'ten yürütme: Bu javascript işlevi tehlikeli midir?

Şu anda aşağıdaki JavaScript yöntemi teşhir ederek yapıyorum:

function doScript(js){ eval(js);} 
sonra Flex böyle bir şey yapabilirsiniz

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

sorum, ben

varsayıyorum bu herhangi bir güvenlik riski empoze etmez edilmektedir: (Not: Ben daha önemli bir şey daha sonra gerçek Flex uygulamasında bir uyarı kutusu yapıyorum) Flex ve JasvaScript'ten beri değil n istemci tarafı ...

Bunu yapmanın daha iyi bir yolu var mı?

cevap

7

Javascript fonksiyonuna gerek yok, ilk argüman ExternalInterface olabilir herhangi bir JavaScript kodu olabilir, bir işlev ismi olmak zorunda değil (belgeler öyle diyor, ama yanlış).

bu deneyin:

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

Bildiğim kadarıyla ve kesinlikle bir hacker değilim, tamamen iyisiniz. Gerçekten, eğer birisi istediyse, yine de sizin istemcinizi kullanarak kodunuzu kullanabilirler, ancak javascript kullanarak sunucu yan kodunuzu nasıl kullanabileceklerini göremiyorum (sunucu tarafı javascript'i kullanmadıkça)

0

Nerede olduğunu anlamıyorum Eval'ı arayarak yapamayacakları bir şey yapmasına izin verir. Burada tanıtılan bir güvenlik deliği varsa, onu göremiyorum.

1

Bu, doğası gereği tehlikeli değildir, ancak kullanıcı tarafından sağlanan verileri işleve aktardığınız anda, kod enjeksiyonundan yararlanmaya hazırdır. Bu endişe verici ve kaçınacak bir şey. Ben daha iyi bir yaklaşım sadece ve daha fazla bir şey gerekir işlevselliğini ortaya çıkarmak olacağını düşünüyorum.

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