Могу ли я включить файлы CryptoJS в мое расширение Chrome?
Я работаю над расширением Chrome, и оно почти готово. Тем не менее, он использует CryptoJS, и мне было интересно, можно ли размещать эти файлы (например, sha1.js) в пакете расширений, когда я публикую его (я скачал CryptoJS и скопировал файл скрипта SHA в каталог расширений).
Конечно, альтернативой может быть включение URL в тег script, но это не сработало сразу.
Любая помощь будет оценена.
3 ответа
Есть плюсы и минусы. В основном плюсы.
- Локальный файл будет загружаться быстрее - задержка диска ниже, чем задержка сети.
- Локальный файл гарантирует, что ваше расширение работает в автономном режиме / при плохой связи.
- Локальный файл более надежен в случае проблем с CDN.
- Локальный файл обладает дополнительной защитой (по крайней мере, на платформах Windows/Mac), поскольку CWS будет генерировать контрольные суммы для всех файлов, а расширение, установленное в магазине, будет остановлено при загрузке, если файлы будут изменены.
- Локальный файл защищен от сетевых атак MITM.
- Локальный файл заморожен в определенной версии - вы не рискуете обновить библиотеку и нарушить совместимость.
- Использование внешнего кода в основном коде расширения (не в скриптах содержимого) требует модификации CSP и CDN с поддержкой HTTPS (по причине атаки MITM).
- Использование внешнего кода в скриптах содержимого может потребовать дополнительных разрешений (в зависимости от конфигурации CORS CDN)
Тем не менее, вам будет необходимо обновлять библиотеку.
- Если в библиотеке есть критическая ошибка / эксплойт, файл, обслуживаемый CDN (если он указывает на "последнюю" версию), может быть обновлен без предупреждения, чтобы смягчить это. В случае локального файла вам необходимо узнать об обновлении и применить его самостоятельно.
- Локальный файл не может быть обновлен без публикации новой версии в CWS. Внешний файл может быть обновлен независимо.
Я сделал это, но тестировал только на своем компьютере разработчика, не публикуя его в Chrome Web Store. Вы просто должны включить его в свой файл manifest.json:
{
...
"background": {
"scripts": [
"cryptojs.js",
"main.js"]
}
...
}
Если кто-то хочет использовать манифест 3, это может быть только один сервис-воркер, зарегистрированный в манифесте:
"background": {
"service_worker": "background.js"
}
в background.js (рабочий сервис) другие библиотеки можно импортировать следующим образом:
try {
importScripts("/node_modules/crypto-js/crypto-js.js");
} catch (e) {
console.error(e);
}