Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
limitrr-php — Besseres PHP-Rate-Limiting mit Redis. | Kitploit
Tools/GitHubGitHub/eddiejibson/limitrr-php
Authentifizierung & AutorisierungScripting & AutomatisierungWebsicherheitDienstprogramme & FrameworksAPI-Sicherheit
GitHubeddiejibson/limitrr-php

limitrr-php

Besseres PHP-Rate-Limiting mit Redis.

Repository anzeigen
20622vor 6 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
chae

Einfaches Rate-Limiting in PHP mit Redis.

Limitrr PHP ist stark von meiner anderen Bibliothek inspiriert, Limitrr, die für NodeJS erstellt wurde. Schauen Sie es sich hier an.

Limitrr PHP ermöglicht es Benutzern, Rate-Limiting einfach in ihre Anwendung zu integrieren. Im Gegensatz zu anderen ähnlichen Paketen erlaubt dieses Dienstprogramm nicht nur die Begrenzung nach der Anzahl der Anfragen, sondern auch nach der Anzahl der abgeschlossenen Aktionen (z.B. das Erlauben einer bestimmten Anzahl erfolgreich erstellter Konten innerhalb eines Zeitraums) und die Einschränkung mit benutzerdefinierten Optionen. Darüber hinaus sind benutzerdefinierte Diskriminatoren möglich – Sie müssen nicht mehr nur nach der IP des Benutzers begrenzen.

Diese Bibliothek bietet auch eine Middleware-Funktion zum einfachen Ratelimiting verschiedener Routen innerhalb eines SlimPHP-Projekts.

Wenn Ihnen dieses Projekt gefällt, geben Sie ihm bitte einen 🌟 auf GitHub.

Pull Requests sind willkommen

Installation

Sie können die limitrr-php-Bibliothek installieren, indem Sie den folgenden Befehl in Ihrem Terminal ausführen (vorausgesetzt, Sie haben Composer installiert)

composer require eddiejibson/limitrr-php "^1.0"

Kurzanleitung

Grundlegende Nutzung

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();

Wert eines bestimmten Schlüssels abrufen

limitrr->get()

Rückgabe: Array

$limitrr->get([
    "discriminator" => $discriminator, //Erforderlich
    "route" => $route, //Nicht erforderlich, Standard wird angenommen
    "type" => $type //Nicht erforderlich
]);
->get()-Parameter

Müssen als Array an die Funktion übergeben werden

  • discriminator: Erforderlich Wobei discriminator das ist, was begrenzt wird (z. B. x erledigte Aktionen pro Diskriminator)
  • route: String Von welcher Route sollen die Werte abgerufen werden? Wenn nicht gesetzt, werden die Werte von der default-Route abgerufen.
  • type: String Statt beide Werte abzurufen, können Sie in diesem Schlüssel entweder requests oder completed angeben, und nur dieser wird als Ganzzahl zurückgegeben.
->get()-Beispiele
$limitrr->get([
    "discriminator" => $discriminator,
    "type" => $type,
    "route" => $route
]); //Außer discriminator sind alle Parameter optional.
//Wenn type nicht an die Funktion übergeben wird, gibt sie
//sowohl die Anzahl der Anfragen als auch der abgeschlossenen Aktionen zurück

//Wobei discriminator das ist, was begrenzt wird
//z. B. x abgeschlossene Aktionen/Anfragen pro Diskriminator
$limitrr->get(["discriminator" => $discriminator]);

//Dies ist in der Regel die IP des Benutzers.
$limitrr->get(["discriminator" => $ip]);
//Dies gibt sowohl die Anzahl der Anfragen als auch der abgeschlossenen Aktionen zurück, die unter dem
//angegebenen Diskriminator in einem Objekt gespeichert sind. Sie können so damit umgehen:
$result = $limitrr->get(["discriminator" => $ip]);
echo $result["requests"] + " Requests";
echo $result["completed"] + " Completed";

//Das obige Beispiel würde die Anzahl der Anfragen und erledigten Aufgaben von der Standardroute
//abrufen. Wenn Sie Werte von einer anderen Route abrufen möchten, können Sie
//diese ebenfalls angeben. Dies kann so erfolgen:
$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";

//Sie können auch nur einen einzigen Wert abrufen – statt sowohl Anfragen als auch Erledigte.
$result = $limitrr->get(["discriminator" => $ip, "route" => "exampleRouteName", "type" => "completed"]);
echo $result["completed"] . " Completed tasks made through the route exampleRouteName";

Anzahl abgeschlossener Aktionen/Aufgaben

limitrr->complete()

Rückgabe: Integer

$limitrr->get([
    "discriminator" => $discriminator, //Erforderlich
    "route" => $route, //Nicht erforderlich, Standard wird angenommen
]);
->complete()-Parameter
Tool herunterladen