Я строю систему CMS, и я хочу ограничить сторонний javascript, который включает в себя возможность встраивания пользователей на свой сайт.Ограничить сторонние скрипты - Google Caja?
Я буду использовать отслеживание в качестве примера, так как он лучше всего описывает то, что я хочу достичь.
- создать белый список разрешенных скриптов (т.е. Google Analytics, Optimizely)
- Пользователь вводит новый сценарий, и это не на белом списке, т.е. Tableau, а функциональность ядра будет быть заблокированным/ограниченным/уменьшенным.
Определение понятия «заблокирован»: В случае, если скрипт не может взаимодействовать с любыми элементами на странице (т.е. часовых элементов формы и данные об уловах из представленных форм) или посещений пользователей, где данные и сбивающих с толку принципиально бесполезные.
Итак, учитывая приведенный выше пример, я ожидал, что функциональность Tableau будет уменьшена. Такие вещи, как отчеты Heatmap, больше не будут работать (поскольку мы блокируем взаимодействие с DOM, клиентские события не должны работать). Также я предполагаю, что, глядя на архитектуру Caja, посещение, как представляется, происходит от службы Cajoled, а не от браузера пользователей?
Глядя на Google Caja, кажется, что это может быть выбор, но фокус всегда вокруг всего HTML/CSS/JS (гаджета/приложения), где то, что я ищу, немного меньше в этом смысле. Возможно, существует альтернативное решение.
Это что-то, что можно настроить как универсальное, или ему нужна конкретная работа для каждого элемента белого списка/черного списка?
РЕДАКТИРОВАТЬ. В нем есть различные типы сценариев песочницы, но все они выглядят относительно неподдерживаемыми или на этапах их производства.
JSandbox https://github.com/eligrey/jsandbox
JS.js https://github.com/jterrace/js.js