概要:
私の会社はレート制限されたAPIを開発しました。私たちの目標は2つあります。
- A:製品の周りに強力な開発者エコシステムを作成します。
- B:APIを使用して独自のアプリケーションを駆動することにより、APIの能力を実証します。
明確化:なぜレート制限を行うのか?
APIは、製品への追加として販売するため、レート制限を行っています。APIへの匿名アクセスでは、1時間あたりのAPI呼び出しのしきい値が非常に低くなっていますが、有料のお客様は1時間あたり1000以上の呼び出しを許可されています。
問題:
私たちのレート制限APIは、開発者のエコシステムに最適ですが、ドッグフードを行うために、同じレート制限に制限することはできません。APIのフロントエンドはすべてJavaScriptであり、APIへの直接のAjax呼び出しを行います。
だから問題は:
どのようにAPIを保護して、レート制限を削除できるようにしますか?
探索されたソリューション(およびそれらが機能しなかった理由)
ホストヘッダーに対してリファラーを確認します。- リファラーが簡単に偽造されるため、欠陥があります。
HMACを使用して、要求と共有秘密に基づいた署名を作成し、サーバーで要求を確認します。- シークレットとアルゴリズムは、フロントエンドのJavaScriptを調べれば簡単に判断できるため、問題が発生します。
リクエストをプロキシし、プロキシでリクエストに署名する- プロキシ自体がAPIを公開しているため、まだ欠陥があります。
質問:
Stack Overflowの優れた頭脳に代替ソリューションを提示することを期待しています。この問題をどのように解決しますか?