Skip to content

Fix: убрать blob: из CSP для Chrome - #26

Merged
ivanvit100 merged 1 commit into
ivanvit100:masterfrom
weltora:fix/chrome-csp-blob
Aug 31, 2026
Merged

Fix: убрать blob: из CSP для Chrome#26
ivanvit100 merged 1 commit into
ivanvit100:masterfrom
weltora:fix/chrome-csp-blob

Conversation

@weltora

@weltora weltora commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Проблема

При загрузке расширения в Chrome/Chromium расширение не загружается:

'content_security_policy.extension_pages': Insecure CSP value "blob:" in directive 'script-src'.

Chrome в Manifest V3 запрещает blob: в script-src CSP для страниц расширения.

Причина

В manifest.chrome.json CSP содержит blob::

"content_security_policy": {
    "extension_pages": "script-src 'self' 'wasm-unsafe-eval' blob:; object-src 'self'"
}

Это используется PluginManager._injectFromBlob() для динамического импорта плагинов через blob URL.

Решение

Убран blob: из CSP только для Chrome. В manifest.firefox.json blob: оставлен — Firefox его поддерживает.

Влияние на функциональность

В PluginManager._loadViaSW() есть цепочка фолбэков:

  1. chrome.scripting.executeScript() — приоритетный метод
  2. _injectScript() — загрузка из plugin-runtime/{key}.js
  3. _injectFromBlob() — blob URL (пропускается в Chrome)
  4. _createSandbox() — sandbox iframe

При удалении blob: Chrome использует sandbox-iframe для загрузки плагинов — это работает корректно.

Тесты

Все 1280 тестов проходят ✅ (36 файлов тестов)

Chrome Manifest V3 prohibits 'blob:' in script-src CSP directive
for extension pages, causing the extension to fail loading with:
"Insecure CSP value blob: in directive script-src"

Removed blob: from content_security_policy.extension_pages in
manifest.chrome.json. User plugins now load via sandbox iframe
fallback instead of blob URL. Firefox manifest is unchanged.

🤖 Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>

@ivanvit100 ivanvit100 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Благодарю за интерес к проекту и столь подробный PR!
Разработка ведётся в первую очередь под firefox, поведение в chromium тестируется только на финальных стадиях. Спасибо, что нашли и решили такую критичную проблему!

@ivanvit100
ivanvit100 merged commit 67773cb into ivanvit100:master Aug 31, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants