Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
limitrr-php — Melhor limitação de taxa PHP usando Redis. | Kitploit
Ferramentas/GitHubGitHub/eddiejibson/limitrr-php
Autenticação e AutorizaçãoScripting e AutomaçãoSegurança WebUtilitários e FrameworksSegurança de API
GitHubeddiejibson/limitrr-php

limitrr-php

Melhor limitação de taxa PHP usando Redis.

Ver Repositório
20617há 6 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
chae

Limitação de taxa leve dentro do PHP usando Redis.

O Limitrr PHP é muito inspirado na minha outra biblioteca, Limitrr, que foi criada para NodeJS. Confira aqui

O Limitrr PHP permite que os usuários integrem facilmente a limitação de taxa em sua aplicação. Diferente de outros pacotes similares, este utilitário permite limitar não apenas pela quantidade de requisições, mas também pela quantidade de ações concluídas (por exemplo, permitir que um certo número de contas seja criado com sucesso em um intervalo de tempo) e ter tais restrições com opções personalizadas. Além disso, discriminadores personalizados são possíveis – você não precisa mais limitar apenas pelo IP do usuário.

Esta biblioteca também fornece uma função de middleware para facilitar a limitação de taxa em várias rotas que você possa ter em um projeto SlimPHP.

Se você aprecia este projeto, por favor, dê uma 🌟 no GitHub.

Pull Requests são bem-vindos

Instalação

Você pode instalar a biblioteca limitrr-php executando o seguinte comando no seu terminal (assumindo que você tem o composer instalado)

composer require eddiejibson/limitrr-php "^1.0"

Guia Rápido

Uso Básico

require "/vendor/autoload.php"; //Require composer's autoload

$options = [
    //Redis keystore information
    "redis" => [
        "host" => "666.chae.sh",
        "port" => 6379,
        "password" => "supersecret",
    ],
    "routes" => [
        "default" => [
            "requestsPerExpiry" => 5,
        ],
    ],

];

//Initialize the Limitrr class and pass the options defined above into it
//Note that the options are not required.
$limitrr = new \eddiejibson\limitrr\Limitrr($options);

//Various examples like this can be found further into the documentation,
//for each function.
$result = $limitrr->get(["discriminator" => $ip]);
echo $result["requests"] + " Requests";
echo $result["completed"] + " Completed";
//Note that this library is no means just for SlimPHP, it just happens to
//provide a middleware function for those who may need it.

//Usage within SlimPHP
$app = new Slim\App();

//Use the Limitrr SlimPHP middleware function, if you wish:
$app->add(new \eddiejibson\limitrr\RateLimitMiddleware($limitrr)); //Make sure to pass in the main Limitrr
//instance we defined above into the middleware function. This is mandatory.

//You can also add the get IP middleware function, it will append the user's real IP
//(behind Cloudflare or not) to the request.
$app->add(new \eddiejibson\limitrr\getIpMiddleware());

//Example usage within a route
$app->get("/hello/{name}", function ($request, $response, $args) {
    $name = $args["name"];
    $ip = $request->getAttribute('realip'); //Get the IP that was defined within Limitrr's get IP middleware function
    return $response->getBody()->write("Hello, ${name}. Your IP is ${ip}.");
});

//You do not have to app the middleware function to every single route, globally.
//You can do it indivually, too - along with passing options into such. Like so:
$app->get("/createUser/{name}", function ($request, $response, $args) {
    //Non intensive actions like simple verification will have a different limit to intensive ones.
    //and will only be measured in terms of each request via the middleware.
    //No further action is required.
    if (strlen($args["name"]) < 5) {
        //Dummy function creating user
        $res = $someRandomClass->registerUser();
        if ($res) {
            //Intensive actions like actually registering a user should have a
            //different limit to normal requests, hence the completedActionsPerExpiry option.
            //and should only be added to once this task has been completed fully
            //In this example, we will be limiting the amount of completed actions a certain IP can make.
            //Anything can be passed in here, however. For example, a email address or user ID.
            //$request->getAttribute('realip') was determined by calling the middleware earlier - getIpMiddleware()
            $limitrr->complete(["discriminator"] => $ip);
        }
    }
})->add(new \eddiejibson\limitrr\RateLimitMiddleware($limitrr, ["route"=>"createUser"]));
//You can also pass the route name within the limitrr middleware function

$app->run();

Obter valor de uma determinada chave

limitrr->get()

Retorna: Array

$limitrr->get([
    "discriminator" => $discriminator, //Required
    "route" => $route, //Not required, default is assumed
    "type" => $type //Not required
]);
Parâmetros de ->get()

Devem ser passados para a função através de um array

  • discriminator: Obrigatório Onde discriminator é a coisa sendo limitada (ex.: x quantidade de ações concluídas por discriminador)
  • route: String De qual rota os valores devem ser recuperados? Se não for definido, irá obter as contagens da rota default
  • type: String Em vez de recuperar ambos os valores, você pode especificar requests ou completed nesta chave e apenas esse valor será retornado como um inteiro.
Exemplos de ->get()
$limitrr->get([
    "discriminator" => $discriminator,
    "type" => $type,
    "route" => $route
]); //Besides discriminator, all parameters are optional.
//If type is not passed into the function, it will
//return both the amount of requests and completed actions

//Where discriminator is the thing being limited
//e.g x amount of completed actions/requests per discriminator
$limitrr->get(["discriminator" => $discriminator]);

//This tends to be the user's IP.
$limitrr->get(["discriminator" => $ip]);
//This will return both the amount of requests and completed actions stored under the
//discriminator provided in an object. You can handle like this:
$result = $limitrr->get(["discriminator" => $ip]);
echo $result["requests"] + " Requests";
echo $result["completed"] + " Completed";

//The above example would get the request and completed task count from the default
//route. If you would like to retrieve values from a different route, you can specify
//this as well. It can be done like this:
$result = $limitrr->get(["discriminator" => $ip, "route" => "exampleRouteName"]);
echo $result["requests"] . " Requests made through the route exampleRouteName";
echo $result["completed"] . " Completed Tasks made through the route exampleRouteName";

//You may also only fetch only one type of value - instead of both requests and completed.
$result = $limitrr->get(["discriminator" => $ip, "route" => "exampleRouteName", "type" => "completed"]);
echo $result["completed"] . " Completed tasks made through the route exampleRouteName";

Completar contagem de ação/tarefa

limitrr->complete()

Retorna: Integer

$limitrr->get([
    "discriminator" => $discriminator, //Required
    "route" => $route, //Not required, default is assumed
]);
Parâmetros de ->complete()

Devem ser passados para a função através de um array

Baixar ferramenta