Class RateLimitFilter

java.lang.Object
jakarta.servlet.GenericFilter
br.ufsc.labsec.web.filters.RateLimitFilter
All Implemented Interfaces:
jakarta.servlet.Filter, jakarta.servlet.FilterConfig, Serializable
Direct Known Subclasses:
RateLimitFilterSigner

public class RateLimitFilter extends jakarta.servlet.GenericFilter
Classe que encapsula métodos comuns para filtros de limite de requisição. Esses filtros são responsáveis por controlar o número de requisições permitidas para um IP dentro de um período de tempo especificado. Eles verificam se o limite de requisições foi excedido e respondem com um código de status HTTP 429 (Too Many Requests) e uma mensagem de erro JSON quando necessário.
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Executa a destruição do filtro.
    void
    doFilter(jakarta.servlet.ServletRequest request, jakarta.servlet.ServletResponse response, jakarta.servlet.FilterChain chain)
    Este método filtra a requisição verificando se o limite de requisições em um periodo especificado não foi excedido.
    void
    init(jakarta.servlet.FilterConfig filterConfig)
    Método de inicialização do filtro.
    void
    setParamsAndStartBucket(String jsonKey, String errorMessage, int bucketDuration, int bucketRequests)
    Define os parâmetros iniciais para o filtro de limite de requisição e inicia o contador de intervalo de tempo.

    Methods inherited from class jakarta.servlet.GenericFilter

    getFilterConfig, getFilterName, getInitParameter, getInitParameterNames, getServletContext, init

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • RateLimitFilter

      public RateLimitFilter()
  • Method Details

    • init

      public void init(jakarta.servlet.FilterConfig filterConfig) throws jakarta.servlet.ServletException
      Método de inicialização do filtro.
      Specified by:
      init in interface jakarta.servlet.Filter
      Overrides:
      init in class jakarta.servlet.GenericFilter
      Parameters:
      filterConfig - Configuração do filtro.
      Throws:
      jakarta.servlet.ServletException - Caso ocorra um erro durante a inicialização do filtro.
    • doFilter

      public void doFilter(jakarta.servlet.ServletRequest request, jakarta.servlet.ServletResponse response, jakarta.servlet.FilterChain chain) throws IOException, jakarta.servlet.ServletException
      Este método filtra a requisição verificando se o limite de requisições em um periodo especificado não foi excedido.
      Parameters:
      request - Requisição recebida pelo filtro
      response - Resposta à requisição
      chain - Cadeia de filtros que pode ser usada para passar a requisição e resposta para o próximo filtro na cadeia
      Throws:
      IOException - se ocorrer um erro de entrada ou saída ao processar a requisição ou resposta
      jakarta.servlet.ServletException - se ocorrer uma exceção geral do servlet ao processar a requisição ou resposta
    • setParamsAndStartBucket

      public void setParamsAndStartBucket(String jsonKey, String errorMessage, int bucketDuration, int bucketRequests)
      Define os parâmetros iniciais para o filtro de limite de requisição e inicia o contador de intervalo de tempo.
      Parameters:
      jsonKey - Chave JSON a ser usada na resposta à requisição em caso de erro.
      errorMessage - Mensagem de erro a ser incluída na resposta à requisição caso o limite seja excedido.
      bucketDuration - A duração do intervalo de tempo em segundos para o controle de limite de requisição.
      bucketRequests - O número máximo de requisições permitidas dentro do intervalo de tempo especificado em bucketDuration.
    • destroy

      public void destroy()
      Executa a destruição do filtro.