2011-02-03 4 views
4

私は入力を受け取り、開発者にAPIのように使用したい出力を提供するアルゴリズムを持っています。サービス拒否攻撃や過度の過度使用を防ぐため、いくつかのレート制限や保護が必要です。どのようなオプションがありますか?アカウントとAPIキーを提供しますか?どのように一般的に動作しますか?このシナリオでは他にどのようなアイデアが可能ですか?公開APIのレートを制限するにはどうすればよいですか?

+0

など私はあなたのコードにドロップすることができPHP plugin for 3scaleがあります、追加すべきであり、それは、すべてのレート制限を有効にしますよね?それは本当に理にかなっていますか?私は最近、ほとんどのPHPインストールが、ネイティブにインストールされたunzipを持っていると期待していますね。 –

+4

タイトルは質問とは無関係のようです。 –

+0

unzip!=レート制限 – dogmatic69

答えて

4

アカウントとAPIキーは良いアイデアのように聞こえます。それ以外の場合は、意図した開発者以外のユーザーがAPIにアクセスできなくなります。

特定のAPIが最後にアクセスされたときに単純なデータベーステーブルを記録し、特定の時間枠でアクセスが多すぎると再利用を拒否するのはかなり簡単です。可能であれば、APIを出力に再利用できるようになるので、開発者は試行錯誤的なアプローチの代わりにそれに応じて調整することができます。

同じ入力が何度も繰り返し使用されることを期待していますか、それとも完全にランダムであると思いますか? APIの再利用の準備が整うまで、出力をキャッシュし、開発者にキャッシュを提供するのはどうでしょうか?このアプローチは、アカウントやキーにはあまり依存しません。

1

精度を犠牲にしてやや複雑さの低いその他のオプションは、IPアドレスを使用しています。明らかにこれは克服するのが簡単ですが、IPアドレスが何であるかを知らない平均的なユーザーのためには機能します。セットアップも簡単です。それはすべてのアプリケーションの複雑さとあなたは間違いなく行くには良い方法することができます

3

APIキーでそれを行うようになった時間の量に依存

は、またopenAuth(http://oauth.net)がある場合のシナリオどこエンドユーザーは第三者によって構築されたアプリを介してサービスにアクセスします。

レート制限/キー管理を自分で設定したくない場合は、http://www.3scale.net/を見てみることをお勧めします。このサービスは、サービスとして無料で提供されています(さらに、請求など)。免責条項として、私はそこで働いているので偏見があるかもしれませんが、私たちはこれを可能な限りシンプルにしようとしています!

あなたは解凍APIを提供したい

関連する問題