Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сторонние javascript и безопасность (https://javascript.ru/forum/misc/67702-storonnie-javascript-i-bezopasnost.html)

selecter 03.03.2017 14:17

Сторонние javascript и безопасность
 
Всем доброго времени суток!
Ситуация такая. Допустим мы создаем некий SPA-приложение а-ля microsoft word. Нам нужно разработать архитектуру таким образом, чтобы сторонние производители могли создавать свои приложения и эти приложения могли по выбору пользователя подключаться к нашему и исполнять свой функционал. Например, можно подключить модуль, который может сделать выделенный текст жирным.
Вот вопрос заключается в том, какой должна быть архитектура такого приложения, чтобы сторонний скрипт был безопасен для основного приложения, пользовательских данных, других приложений и т.д.?

selecter 03.03.2017 20:43

Может не совсем понятно сформулировал вопрос? Если надо уточнить - напишите пожалуйста. Неужели никто не сталкивался с такой задачей?

Alexandroppolus 03.03.2017 21:55

selecter,
чтобы посторонний скрипт не мог сделать ничего опасного, его надо запускать в iframe с отдельным доменом. Обмениваться данными через postMessage https://learn.javascript.ru/cross-wi...th-postmessage. Тут, конечно, будут ограничения.

Гораздо больше возможностей будет, если скрипт запускать у себя на странице. Но это можно делать только для проверенных скриптов. Придется делать премодерацию, запретить автообновление по-тихому, и т.д. В общем, каждый раз тупо изучать, что в коде поменялось, нет ли каких закладок.

selecter 04.03.2017 11:18

Alexandroppolus,
спасибо за ответ. Я специально не стал упоминать про iframe чтобы не задавать вектор. Но, видимо, это действительно единственный путь. Как я понимаю, нужно создать API, которое предоставляет наружу некий функционал. Кроме как через API-шные функции достучаться до целевой страницы никак нельзя. И эти функции пользуют сторонние скрипты, которые подгружаются в iframe. Я правильно понимаю?


Часовой пояс GMT +3, время: 05:45.