Контекст:
- У вас есть веб-сервер, который должен предоставлять эксклюзивный контент только в том случае, если на вашем клиенте установлен ваш конкретный расширение Chrome.
- У вас есть две возможности предоставить пакет расширения Chrome:
- В интернет-магазине Chrome
- С вашего собственного сервера
Проблема:
- Существует множество решений, позволяющих узнать, что установлено расширение Chrome:
- Вставка элемента при загрузке веб-страницы с помощью Скрипты содержимого.
- Отправка определенных заголовков на сервер с помощью Веб-запросы.
- Etc.
- Но, похоже, нет решения проверить подлинность расширения Chrome, которое взаимодействует с вашей веб-страницей.
- В самом деле, поскольку исходный код расширения Chrome можно просмотреть и скопировать любым, кто хочет, , похоже, нет способа узнать, является ли текущее расширение Chrome взаимодействующим с вашей веб-страницей тем, которое у вас есть опубликовал или клонированную версию (и, возможно, несколько измененную) другим человеком.
- Кажется, вы только можете узнать, что некоторое расширение Chrome взаимодействует с вашей веб-страницей "ожидаемым образом", но вы не можете проверить его подлинность.
Решение?
- Одно из решений может заключаться в использовании информации, содержащейся в пакете расширения Chrome, и которая не может быть изменена или скопирована кем-либо еще:
- Отправка идентификатора расширения Chrome на сервер? Но как?
- Идентификатор должен быть отправлен вами и вашим кодом JavaScript, и, похоже, нет возможности сделать это с помощью "внутренней" функции Chrome.
- Итак, если кто-то еще отправит один и тот же идентификатор на ваш сервер (какой-то подмену ID расширений Chrome), ваш сервер будет рассматривать его расширение Chrome как подлинное!
- Использование закрытого ключа, который использовался при упаковке приложения? Но как?
- Кажется, что нет никакого способа доступа или использования каким-либо образом этого ключа программно!
- Отправка идентификатора расширения Chrome на сервер? Но как?
- Еще одно решение, заключающееся в использовании плагинов NPAPI и встраивании методов аутентификации, таких как GPG и т.д. Но это решение нежелательно в основном из-за большой раздел "Предупреждение" в API doc.
- Есть ли другое решение?
Примечания
Этот вопрос пытается повысить реальную проблему безопасности в API расширения Chrome: как проверить подлинность вашего расширения Chrome, когда вам нужно взаимодействовать с вашими службами. Если есть какие-либо недостающие возможности или любые недоразумения, пожалуйста, не стесняйтесь спрашивать меня в комментариях.