2008-08-21 1 views
3

У меня есть приложение flex, которое нуждается в возможности генерации и выполнения JavaScript. Когда я говорю об этом, я имею в виду, я должен выполнить сырой JavaScript, что я создаю в моем приложении Flex (не только существующий метод JavaScript)Выполнение JavaScript из Flex: опасна ли эта функция 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

Это не является неотъемлемой опасностью, но в тот момент, когда вы передаете какие-либо данные, предоставленные пользователем, функция созрела для эксплойта для инъекций кода. Это вызывает беспокойство, и я избегаю чего-то. Я думаю, что лучший подход состоял бы в том, чтобы только разоблачить функциональность, которую вам нужен , и ничего более.

Смежные вопросы