Выполнение JavaScript из Flex:Опасна ли эта функция javascript?

StackOverflow https://stackoverflow.com/questions/20510

  •  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');");
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top