JSON Web API を設計しており、使用状況を監視し、悪意のある/不正なクライアントをブロックするために、一意の ID でクライアントを区別したいと考えています。API は JavaScript ライブラリにカプセル化されておらず、Web アプリ専用ではありません。あらゆる種類のクライアント (デスクトップ、電話など) で使用できます。
問題は、Web アプリ (公式 Web サイト) も API 自体のクライアントであるため、その API キーを公開する必要があることです。その結果、一部のユーザーは、独自のキーを生成する代わりに、ページ上の JavaScript からキーを抽出して使用することができました。
より優れた/よりスマートな設計を選択して、この問題を何らかの形で軽減することは可能ですか? または、悪意を持って API を使用している誰かがこれを悪用できるという事実を受け入れなければなりませんか?
私はフロントエンド アプリ (EmberJS) とバックエンド サーバー (Go) を 100% コントロールしているので、代替案を提案することができます。
- セッション/IP ごとのレート制限を使用して、その場合に備えて追加の保護レイヤーを追加しています
- twitter.com ページはかつて、独自の API のクライアントでもありました。彼らはどのようにそれを解決しましたか?
注: 問題は、認証やセキュリティ自体に関するものではなく、認証に加えて (!) API キーの使用をサード パーティ ユーザーに要求する方法です!