Комментарии 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 оставили вторым слоем.

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