Выполнение JavaScript из Flex:Опасна ли эта функция javascript?
-
09-06-2019 - |
Вопрос
У меня есть гибкое приложение, которому нужна возможность генерировать и выполнять JavaScript.Когда я говорю это, я имею в виду, что мне нужно выполнить необработанный JavaScript, который я создаю в своем приложении Flex (а не просто существующий метод JavaScript)
В настоящее время я делаю это, предоставляя следующий метод JavaScript:
function doScript(js){ eval(js);}
Затем я могу сделать что-то подобное в Flex (примечание:Я делаю что-то более существенное, чем окно оповещения в приложении real Flex):
ExternalInterface.call("doScript","alert('foo'));
Мой вопрос в том, создает ли это какую-либо угрозу безопасности, я предполагаю, что это не так, поскольку все Flex и JasvaScript работают на стороне клиента...
Есть ли лучший способ сделать это?
Решение
Нет необходимости в функции JavaScript, первый аргумент которой ExternalInterface
может быть любым кодом JavaScript, это не обязательно должно быть имя функции (так сказано в документации, но это неправильно).
Попробуй это:
ExternalInterface.call("alert('hello')");
Другие советы
По своей сути это не опасно, но в тот момент, когда вы передаете любые предоставленные пользователем данные в функцию, она созрела для использования при внедрении кода.Это вызывает беспокойство, и я бы предпочел этого избежать.Я думаю, что лучшим подходом было бы предоставить только ту функциональность, которую вы потребность, и ничего больше.
Насколько я знаю, а я определенно не хакер, с вами все в полном порядке.Действительно, если бы кто-то захотел, он мог бы в любом случае использовать ваш код на стороне клиента, но я не понимаю, как они могли бы использовать ваш серверный код с использованием javascript (если только вы не используете серверный javascript)
Я не понимаю, где это позволяет им делать что-то, чего они уже не могли сделать, вызвав eval .Если здесь и есть какая-то брешь в системе безопасности, то я ее не вижу.
Помните также, что действия скрипта управляются тегом "allowScriptAccess" в инструкции.Если веб-страница не хочет этих действий, они не должны разрешать выполнение скриптов.
http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_16494
ExternalInterface.call("eval", "alert('hello');");