Construa seu próprio WAF

Se você está interessado em construir seu próprio Firewall de Aplicações Web (WAF) usando as APIs públicas da biblioteca Shieldon, você pode criar um sistema semelhante ao Firewall Shieldon.

Aqui está um exemplo que mostra como o Shieldon funciona, fornecendo orientações para a implementação manual do Shieldon em seu aplicativo web.

Diagrama do Ciclo de Vida

Abaixo está um diagrama ilustrando o ciclo de vida da instância do Shieldon. Você não precisa compreender tudo agora, mas ao personalizar seus próprios componentes, módulos CAPTCHA e mais, ele servirá como uma referência útil.

Diagrama do Ciclo de Vida

Dicas

1. Inicialize a instância do Shieldon.

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

2. Configure um driver de dados.

Neste exemplo, o SQLite é usado como o driver de dados.

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

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

3. Configure os componentes.

Os componentes do Shieldon são conjuntos de regras para permitir ou negar permanentemente as sessões.

Neste exemplo, o componente TrustedBot é carregado para permitir os motores de busca populares, impedindo assim que seus bots entrem no processo de verificação - componentes e filtros subsequentes.

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

4. Configure um canal. (opcional)

Se você estiver usando apenas uma instância do kernel Shieldon em seu aplicativo web, você pode ignorar essa configuração. O canal simplesmente age como o prefixo para os nomes das tabelas de dados.

$kernel->setChannel('web_project');

5. Limite o número de sessões online. (opcional)

Essa configuração permite apenas 10 sessões para visualizar a página atual. O tempo de expiração padrão é de 300 segundos.

$kernel->limitSession(10, 300);

6. Carregue os módulos CAPTCHA.

Você pode configurar um serviço CAPTCHA, como o Google reCAPTCHA.

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

7. Comece a proteger seu website

$result = $kernel->run();

if ($result !== $kernel::RESPONSE_ALLOW) {
    if ($kernel->captchaResponse()) {
        // Desbloqueie a sessão atual.
        $kernel->unban();
    }

    $response = $kernel->respond();

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

E é isso.