Qual é a melhor maneira de implementar um algoritmo de limitação de taxa para solicitações da web?

Duplas possíveis / parciais:

O que é um bom algoritmo de limitação de taxa?O método de limitação chama as solicitações M em N segundosMelhor maneira de implementar a limitação de solicitações no ASP.NET MVC?

Eu estou procurando a melhor maneira de implementar um algoritmo de limitação de taxa de janela de tempo móvel para um aplicativo da Web para reduzir ataques de spam ou de força bruta.

Exemplos de uso seriam "Número máximo de tentativas de login com falha de um determinado IP nos últimos 5 minutos", "Número máximo de (posts / votos / etc ...) nos últimos N minutos".

Eu preferiria usar um algoritmo de janela de tempo móvel, em vez de uma redefinição de estatísticas a cada X minutos (como o twitter api).

Isso seria para um aplicativo C # / ASP.Net.

questionAnswers(5)

yourAnswerToTheQuestion