1

REST API を使用する Web アプリケーションがあります。API をより広い世界と共有したいのですが、その前に、バグのあるクライアントによる悪用/高負荷を防ぐためにレート制限を追加する必要があります。自分の webapp に例外を設けて、より高い制限を設けたいと思います。

これを行う合理的な方法はありますか?100% の防弾ソリューションを探しているわけではありませんが、API の悪用を少し難しくするだけの何かかもしれません。

webapp は公開されているため、API トークンによるレート制限だけに頼ることはできません。誰かが同じトークンを使用する可能性があるためです。

4

2 に答える 2

1

依存します。全員を制限しますか、それとも同じユーザーを制限しますか? 最初のケースでは、最後の呼び出しが発生した時間を追跡し、最後の 10 秒間 (または必要に応じて) 呼び出しを回避します。2 番目のケースでは、ユーザーもチェックして、セッションまたはトークンも追跡する必要があります。

于 2013-06-12T21:06:11.447 に答える
1

Web アプリケーションはユーザーに対して何も隠すことができないため、API と通信するアプリケーションが自分のものであることを保証する方法はないと思います。

できることはすべて、あいまいさによるセキュリティであり、定義上、安全ではありません。

編集

私は解決策を持っていますが、まだ安全ではありませんが、それはアイデアです。

まず、2 つの認証システムを持つことです。

  1. 第三者認証(APIトークン)
  2. Webアプリ認証(APIトークン+Webトークン)

それならあなたの考えに少し似ています。HTTP セッションごとにトークンを生成します。違いは、Web アプリ(呼び出しはそのように認証されます) には下限があることです。(例: サード パーティの場合は 10k、Web アプリの場合は 1k)。承認された呼び出しの数を減らす必要がある理由は、1 つの HTTP セッション (背後に 1 人) が生成する API 呼び出しがサード パーティのアプリよりも少ないためです。それはあなたの場合ですか?

もちろん、サード パーティ アプリケーションは Web アプリとして簡単に認証できますが、その場合はセッションをより迅速に更新する必要があるため、IP ごとのセッション数を監視できます。大学や企業は、多くの場合、単一の IP に大きく遅れをとっていることに注意してください。

于 2013-06-12T21:08:25.357 に答える