Skip to content
ФреймворкJavaScript

Dev override seam: модель угроз и отключение

Механизм для разработки, который есть в каждой опубликованной сборке: как он работает, почему это безопасно и как убрать его из своего бандла.

Обновлено 20 авг. 2026 г.Редактировать на GitHub

Что это такое

Каждая опубликованная точка входа @bloklabs/core сначала проверяет globalThis.__BLOK_DEV_OVERRIDE__ и только потом откатывается на встроенную реализацию. Это механизм для собственных инструментов разработки Blok: он позволяет подставить локальную сборку в работающее приложение через расширение браузера.

Почему это безопасно

Это пассивное чтение в пределах текущего окружения — blok никогда не делает fetch, не вызывает eval и не разрешает URL, а сам механизм никогда не читает localStorage, мета-теги, параметры URL или атрибуты DOM, поэтому он ничего не даёт атакующему, который ещё не может выполнять код в вашем origin. Значения, являющиеся DOM-узлами, отклоняются, что закрывает DOM clobbering.

Как отключить

Если вы хотите полностью убрать эту ветку из своей сборки, задайте для каждой точки входа алиас на её файл реализации. Используйте алиас с точным совпадением (регулярное выражение) — обычный строковый ключ вида '@bloklabs/core' совпадает по префиксу и со всеми подпутями — например, для Vite/Rollup: resolve: { alias: [{ find: /^@bloklabs\/core$/, replacement: '@bloklabs/core/dist/blok-impl.mjs' }] }. Каждой точке входа с подпутём (/tools, /full, …) нужна своя пара, указывающая на её модуль -impl.