Привет всем! У меня возник вопрос по поводу безопасности выполнения JavaScript в Flex-приложении.
Суть в том, что мне нужно генерировать и выполнять JavaScript-код прямо из Flex. Не просто вызывать существующие функции, а создавать и выполнять новый код на лету.
Сейчас я делаю это так:
function doScript(js) {
eval(js);
}
А в Flex вызываю примерно так:
ExternalInterface.call('doScript', 'console.log(\'Привет из Flex!\')');
Насколько это безопасно? Ведь код выполняется на стороне клиента. Может есть способ лучше? Буду благодарен за советы!
Динамическое выполнение JS из Flex - рискованная затея. Может, стоит подумать об альтернативной архитектуре? Если совсем никак, то хотя бы используй строгую валидацию входных данных и ограничь доступ скрипта к критичным ресурсам. А вообще, не проще ли реализовать нужную логику на стороне сервера? Так будет и безопаснее, и масштабируемее. Что думаешь?
Вообще, выполнение динамического JS из флеша - такое себе с точки зрения безопасности. Лучше пересмотреть архитектуру. Если никак, то хотя бы валидируй входящий код и используй CSP. Можно попробовать new Function() вместо eval, чуть безопаснее будет. И обязательно проверяй источник данных, чтоб никакой инъекции не было. В идеале конечно вообще отказаться от такого подхода, но понимаю, что legacy-код порой диктует свои условия.