私は悪用を避けるために、Railsアプリケーションのレート制限をREST APIに追加したいと考えています。これについて少し調べてみると、アプリケーション自体でこれをチェックするのではなく、move this responsibility into the web serverがベストプラクティスのように見えます。残念ながら、私がHerokuにアプリケーションをホストしているので、私の場合はこれを行うことができないため、Webサーバーの設定を制御することはできません。HerokuでレートリミットRESTリクエスト
この場合、APIの不正使用を防止するために何を行う必要がありますか?
ええと、レスポンスの大きさに応じて、ソリューションを一緒にハックすることもできます(醜いかもしれませんが)。たとえば、レスポンスが小さい場合(制限するレスポンスが1MB未満の場合)、実行中のアクションに基づいて、特定のセッションからのリピート要求が制限/遅延されるタイマーを設定できます。代わりに、あなたの応答が大きい場合、これは応答の間隔を置くだけです(転送速度を遅くするのではなく)。 – jefflunt
@normalocityうーん、私はこのアイデアが好きです!私は脆弱なコントローラの単純なbefore_filterでは醜いとは思わない。より複雑なルールを追加すると複雑になる可能性があります(ユーザーあたり1分あたり10リクエスト)。 – xoebus
ええ、多分私はそれを答えとして提出するでしょう。 :)最後にリクエストしたときにメモしたユーザーアカウントにフィールドを追加することもできます。難しいことは、Mongrel(または別のシングルスレッドのWebサーバー)を使用している場合は、単にリクエストを遅らせるだけで、他のすべてのユーザーを減速させることになります。私はそれが私が醜いことが意味するものだと思う。別のWebサーバーを使用しているのであれば、このアプローチが有効かもしれません。 – jefflunt