入力を受け取り、開発者に API のように使用してもらいたい出力を配信するアルゴリズムがあります。サービス妨害攻撃や過剰な使用を防ぐために、レート制限または保護が必要です。どのようなオプションがありますか? アカウントと API キーを提供する必要がありますか? それは一般的にどのように機能しますか?このシナリオでは他にどのようなアイデアが考えられますか?
3 に答える
アカウントとAPIキーは良い考えのように聞こえますが、意図した開発者以外の人がAPIにアクセスするのを妨げるものは他にありません。
特定のAPIが最後にアクセスされたときにログに記録し、特定の時間枠内に何度もアクセスされた場合は再利用を拒否する単純なデータベーステーブルを用意するのはかなり簡単です。可能であれば、次回APIが出力で再利用できるようになるときに戻ってください。そうすれば、開発者は試行錯誤のアプローチをとる代わりに、それに応じて調整できます。
同じ入力が何度も使用されることを期待していますか、それとも完全にランダムですか?APIを再利用する準備ができるまで、出力をキャッシュし、開発者にのみキャッシュを提供するのはどうですか?このアプローチは、アカウントやキーへの依存度もはるかに低くなっています。
API キーは間違いなく良い方法です。エンド ユーザーがサード パーティによって構築されたアプリを介してサービスにアクセスするシナリオでは、openAuth ( http://oauth.net ) もあります。
レート制限/キー管理を自分でコーディングしたくない場合は、http://www.3scale.net/を見てみる価値があります。これは、サービスとして箱から出してすぐに無料で多くのことを行います (その他のものも含まれています)。開発者ポータル、請求などを含む)。免責事項として、私はそこで働いているので、偏見があるかもしれませんが、これをできるだけ簡単にするように努めています!
追加する必要がありますが、コードにドロップできる3scale 用の PHP プラグインがあり、すべてのレート制限などが有効になります。
正確さを犠牲にして少し複雑ではない他のオプションは、IP アドレスを使用することです。明らかにこれは克服するのが簡単ですが、IPアドレスが何であるかを知らない平均的なユーザーにとっては機能します. セットアップも簡単。
それはすべて、アプリの複雑さと、それを行うために必要な時間に依存します