Costruisci il tuo WAF personalizzato

Se sei interessato a costruire il tuo Web Application Firewall (WAF) utilizzando le API pubbliche della libreria Shieldon, puoi creare un sistema simile al Firewall Shieldon.

Ecco un esempio che mostra come Shieldon funziona, fornendo indicazioni per l'implementazione manuale di Shieldon nella tua applicazione web.

Diagramma del Ciclo di Vita

Di seguito è riportato un diagramma che illustra il ciclo di vita dell'istanza di Shieldon. Non è necessario comprenderlo completamente in questo momento, ma mentre personalizzi i tuoi componenti, moduli CAPTCHA e altro, ti servirà come utile riferimento.

Diagramma del Ciclo di Vita

Suggerimenti

1. Inizializza l'istanza di Shieldon.

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

2. Configura un driver dei dati.

In questo esempio, SQLite viene utilizzato come driver dei dati.

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

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

3. Configura i componenti.

I componenti di Shieldon sono insiemi di regole per consentire o negare in modo permanente le sessioni.

In questo esempio, viene caricato il componente TrustedBot per consentire i motori di ricerca popolari, impedendo ai loro bot di entrare nel processo di controllo - i componenti e i filtri successivi.

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

4. Configura un canale. (opzionale)

Se stai utilizzando solo un'istanza del kernel Shieldon nella tua applicazione web, puoi ignorare questa impostazione. Il canale funge semplicemente da prefisso per i nomi delle tabelle dei dati.

$kernel->setChannel('web_project');

5. Limita il numero di sessioni online. (opzionale)

Questa impostazione consente solo 10 sessioni per visualizzare la pagina corrente. Il tempo di scadenza predefinito è di 300 secondi.

$kernel->limitSession(10, 300);

6. Carica i moduli CAPTCHA.

Puoi configurare un servizio CAPTCHA, ad esempio Google reCAPTCHA.

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

7. Inizia a proteggere il tuo sito web

$result = $kernel->run();

if ($result !== $kernel::RESPONSE_ALLOW) {
    if ($kernel->captchaResponse()) {
        // Rimuovi il blocco dalla sessione corrente.
        $kernel->unban();
    }

    $response = $kernel->respond();

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

E questo è tutto.