私はかなり直感的なURLを持つWebアプリケーションを持っているので、人々はこれらのURLを使用してサーバーにリクエストを行うChrome拡張機能をいくつか作成しました。残念ながら、これらの拡張機能は、サーバーをハンマーで叩いたり、不正な形式のリクエストを発行したりするなどの問題を引き起こします。そのため、これらの拡張機能をブロックする方法を見つけようとしています。少なくとも、これらの拡張機能の使用を思いとどまらせるためにサーバーへのリクエストを作成することは困難です。 (代わりに使用する必要があるAPIを提供します)。
リクエストにカスタムヘッダーを追加し、レスポンスにjunk-json-preambleを追加しようとしましたが、拡張機能の作成者はそれに合わせてコードを更新しました。
私はChrome拡張機能に精通していないので、ホストページへのどのようなアクセス権がありますか?ホストページでJavaScript関数を呼び出すことはできますか?ホストページリクエストと拡張リクエストを区別するためにブラウザに含まれる特別なヘッダーはありますか?ホストページは拡張機能のリストを調べて、特定の拡張機能を拒否できますか?
私たちが検討したいくつかのオプションは次のとおりです。
- ユーザーによるレート制限QPSですが、問題はすべてのクエリが等しいわけではなく、拡張機能は通常、ユーザーが入力したクエリのように見えるいくつかの高価なクエリを開始します。
- ユーザーが使用できるサーバー時間の量を制限しますが、問題は、ユーザーが移動したり、高価なクエリを数回実行したりするだけで、この制限に達する可能性があることです。
- 静的なカスタムヘッダー/応答テキストを追加しましたが、コードを更新してコードを模倣しました。
- ある種のトークン(おそらく何らかの方法で暗号化されている)を理解するために、拡張機能が簡単に推測できないリクエストに含めます。JSを縮小/難読化するので、JSソースコードに埋め込んでも問題ありません(変数名を推測するのは難しいため)。
これは100%解決可能な問題ではないかもしれませんが、私たちはそれと戦う上で優位に立つか、UIをこすり取るのを十分に難しくして少数の人がそれを行うようにしたいと思っています。