Выполнение JavaScript из Flex: опасна ли эта функция JavaScript? - PullRequest
4 голосов
/ 21 августа 2008

У меня есть гибкое приложение, которое нуждается в способности генерировать и выполнять JavaScript. Когда я говорю это, я имею в виду, что мне нужно выполнить сырой JavaScript, который я создаю в своем приложении Flex (а не только существующий метод JavaScript)

В настоящее время я делаю это, выставляя следующий метод JavaScript:

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

Затем я могу сделать что-то подобное во Flex (примечание: я делаю что-то более существенное, чем окно предупреждения в реальном приложении Flex):

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

Мой вопрос заключается в том, накладывает ли это какую-либо угрозу безопасности, я предполагаю, что это не так, поскольку все Flex и JasvaScript работают на стороне клиента ...

Есть ли лучший способ сделать это?

Ответы [ 6 ]

7 голосов
/ 21 августа 2008

Нет необходимости в функции JavaScript, первый аргумент ExternalInterface может быть любым кодом JavaScript, это не обязательно должно быть имя функции (так сказано в документации, но это неправильно).

Попробуйте это:

ExternalInterface.call("alert('hello')");
1 голос
/ 21 августа 2008

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

0 голосов
/ 11 ноября 2016
ExternalInterface.call("eval", "alert('hello');");
0 голосов
/ 15 сентября 2008

Помните также, что действиями скрипта управляет тег «AllowScriptAccess» в операторе. Если веб-страница не хочет этих действий, они не должны позволять сценариям вызывать.

http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_16494

0 голосов
/ 21 августа 2008

Я не понимаю, где это позволяет им делать то, что они уже не могли сделать, вызывая eval. Если здесь есть дыра в безопасности, я ее не вижу.

0 голосов
/ 21 августа 2008

Насколько я знаю, и я определенно не хакер, с вами все в порядке. Действительно, если бы кто-то хотел, они могли бы использовать ваш код в любом случае на стороне клиента, но я не понимаю, как они могли бы использовать ваш код на стороне сервера, используя javascript (если вы не используете javascript на стороне сервера)

...