コンテキスト:
- クライアントに特定の Chrome 拡張機能がインストールされている場合にのみ、排他的なコンテンツを提供する必要がある Web サーバーがあります。
- Chrome 拡張機能パッケージを提供するには、次の 2 つの方法があります。
- Chrome ウェブストアから
- 独自のサーバーから
問題:
- Chrome 拡張機能がインストールされていることを確認できるソリューションは多数あります。
- コンテンツ スクリプトを使用して、Web ページの読み込み時に要素を挿入します。
- Web Requestsを使用して特定のヘッダーをサーバーに送信します。
- 等。
- しかし、Web ページと対話している Chrome 拡張機能が本物かどうかを確認する解決策はないようです。
- 実際、Chrome 拡張機能のソース コードは誰でも閲覧およびコピーできるため、Web ページと対話している現在の Chrome 拡張機能が、公開したものなのか、複製されたバージョンなのかを知る方法はないようです(他の人によって多少変更されている可能性があります。
- 一部の Chrome 拡張機能が「予期された方法」で Web ページと対話していることだけを知ることができるようですが、その信頼性を確認することはできません。
ソリューション?
- 解決策の 1 つは、Chrome 拡張機能パッケージに含まれ、他のユーザーが変更またはコピーできない情報を使用することです。
- Chrome 拡張機能の ID をサーバーに送信していますか? しかし、どのように?
- ID はあなたとあなたの JavaScript コードによって送信される必要があり、「内部」Chrome 関数でそれを行う方法はないようです。
- したがって、他の誰かが同じ ID をサーバーに送信した場合 (ある種の Chrome 拡張機能の ID スプーフィング)、サーバーは彼の Chrome 拡張機能を本物と見なします!
- アプリケーションをパッケージ化したときに提供された秘密鍵を使用していますか? しかし、どのように?
- プログラムでこのキーにアクセスしたり、何らかの方法で使用したりする方法はないようです!
- Chrome 拡張機能の ID をサーバーに送信していますか? しかし、どのように?
- もう 1 つの解決策は、NPAPI プラグインを使用し、GPG などの認証方法を埋め込むことです。しかし、この解決策は、API の docに大きな「警告」セクションがあるため、主に望ましくありません。
- 他の解決策はありますか?
ノート
この質問は、Chrome 拡張機能の API で実際のセキュリティ問題を提起しようとしています: サービスとのやり取りに関して、Chrome 拡張機能の信頼性を確認する方法. 不足している可能性や誤解がある場合は、コメントでお気軽にお問い合わせください。