Обновить

Как дать AI-менеджеру маркетплейсов писать код и не пустить его к серверу

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели5.1K
Всего голосов 1: ↑0 и ↓1-1
Комментарии2

Комментарии 2

Вырезание fetch и WebSocket из глобальной области воркера – это чёрный список, а чёрный список в JavaScript всегда отстаёт от спецификации: движок регулярно добавляет новые ходы в сеть, и каждый из них по умолчанию доступен чужому коду. Надёжнее противоположный порядок – заморозить всё через Object.freeze глобала и выдавать только прокси-объект api, тогда новый браузерный API автоматически попадает в закрытое состояние. Как минимум стоит держать под рукой тест на iframe с sandbox="allow-scripts": null-origin честно отрезает доступ к родителю без перечисления свойств.

Спасибо, вы правы, переделали. Worker теперь живёт в скрытом iframe sandbox="allow-scripts" (без allow-same-origin): origin null, cookie сайта и доступа к странице нет. В рамке CSP default-src 'none', поэтому сеть потока закрыта целиком, включая import() и всё, что появится в браузерах позже. Со страницей рамка общается только через MessageChannel, наружу код ходит лишь через прокси api. Старый список удалённых fetch/XHR/WebSocket оставили вторым слоем.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации