Eigenen WAF erstellen

Wenn Sie daran interessiert sind, Ihre eigene Web Application Firewall (WAF) unter Verwendung der öffentlichen APIs der Shieldon-Bibliothek zu erstellen, können Sie ein System ähnlich der Shieldon Firewall erstellen.

Hier ist ein Beispiel, das zeigt, wie Shieldon funktioniert und Anleitungen zur manuellen Implementierung von Shieldon in Ihrer Webanwendung bietet.

Lebenszyklus-Diagramm

Nachfolgend finden Sie ein Diagramm, das den Lebenszyklus einer Shieldon-Instanz veranschaulicht. Sie müssen nicht alles sofort verstehen, aber als Sie Ihre eigenen Komponenten, CAPTCHA-Module und mehr anpassen möchten, wird es eine nützliche Referenz sein.

Lebenszyklus-Diagramm

Tipps

1. Shieldon-Instanz initialisieren.

$kernel = new \Shieldon\Firewall\Kernel();

2. Datenbanktreiber einrichten.

In diesem Beispiel wird SQLite als Datenbanktreiber verwendet.

$dbLocation = APPPATH . 'cache/shieldon.sqlite3';
$pdoInstance = new \PDO('sqlite:' . $dbLocation);

$kernel->setDriver(
    new \Shieldon\Firewall\Driver\SqliteDriver($pdoInstance)
);

3. Komponenten einrichten.

Shieldon-Komponenten sind Regelsets zum dauerhaften Zulassen oder Ablehnen von Sitzungen.

In diesem Beispiel wird die TrustedBot-Komponente geladen, um beliebte Suchmaschinen zuzulassen und zu verhindern, dass ihre Bots den Überprüfungsprozess - nachfolgende Komponenten und Filter - betreten.

$kernel->setComponent(
    new \Shieldon\Firewall\Component\TrustedBot()
);

4. Kanal einrichten (optional).

Wenn Sie nur eine Shieldon-Kernel-Instanz in Ihrer Webanwendung verwenden, können Sie diese Einstellung ignorieren. Der Kanal dient lediglich als Präfix für die Namen der Datenbanktabellen.

$kernel->setChannel('web_project');

5. Begrenzung der gleichzeitigen Sitzungsanzahl (optional).

Diese Einstellung erlaubt nur 10 Sitzungen, um die aktuelle Seite anzuzeigen. Die Standardablaufzeit beträgt 300 Sekunden.

$kernel->limitSession(10, 300);

6. CAPTCHA-Module laden.

Sie können einen CAPTCHA-Dienst einrichten, z.B. Google reCAPTCHA.

$kernel->setCaptcha(
    new \Shieldon\Firewall\Captcha\Recaptcha([
        'key' => '6LfkOaUUAAAAAH-AlTz3hRQ25SK8kZKb2hDRSwz9',
        'secret' => '6LfkOaUUAAAAAJddZ6k-1j4hZC1rOqYZ9gLm0WQh',
    ])
);

7. Schützen Sie Ihre Website

$result = $kernel->run();

if ($result !== $kernel::RESPONSE_ALLOW) {
    if ($kernel->captchaResponse()) {
        // Aktuelle Sitzung entsperren.
        $kernel->unban();
    }

    $response = $kernel->respond();

    if ($response->getStatusCode() !== 200) {
        $httpResolver = new \Shieldon\Firewall\HttpResolver();
        $httpResolver($response);
    }
}

Und das ist alles.