Могу ли я включить файлы 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);
}
Другие вопросы по тегам