CakePHP

O CakePHP é um framework web de código aberto amplamente utilizado que segue o padrão arquitetural MVC. Ele é muito respeitado na comunidade PHP e oferece uma variedade de recursos e ferramentas para construir aplicações web.

Este guia foi testado com sucesso na versão 3.8 do CakePHP. No entanto, também deve ser aplicável a versões mais antigas do framework.

Firewall no framework CakePHP

Instalação

Use o PHP Composer:

composer require shieldon/shieldon

Isso também instalará as dependências necessárias para o Shieldon:

  • shieldon/psr-http A implementação PSR-7, 15, 17 com documentação completa e testes abrangentes.
  • shieldon/event-dispatcher O despachante de eventos mais simples.
  • shieldon/web-security Uma coleção de funções relacionadas à segurança web.
  • shieldon/messenger Uma coleção de módulos para envio de mensagens para APIs ou serviços de terceiros, como Telegram, Line, RocketChat, Slack, SendGrid, MailGun e muito mais.

Implementação

CakePHP 3

As etapas 1 e 2 são aplicadas ao mesmo arquivo localizado em /config/route.php.

As etapas 1 e 2 envolvem a modificação do mesmo arquivo localizado em /config/routes.php. Portanto, você precisará realizar as seguintes etapas dentro desse arquivo:

  • Abra o arquivo /config/routes.php.
  • Localize a seção onde você define as rotas da sua aplicação.
  • Implemente as alterações descritas nas etapas 1 e 2 de acordo com as instruções fornecidas.
  • Salve as alterações no arquivo /config/routes.php.

Seguindo essas etapas, você garantirá que ambas as modificações sejam feitas no arquivo apropriado.

1. Registrar um Middleware

Existe um middleware para CakePHP aqui. Basta registrá-lo na sua aplicação.

Exemplo:

/**
 * Aplicar o Firewall Shieldon ao escopo da rota atual.
 */
$routes->registerMiddleware(
    'firewall',
    new \Shieldon\Firewall\Integration\CakePhp()
);

$routes->applyMiddleware('firewall');

2. Definir uma Rota para o Painel de Firewall

Exemplo:

/**
 * Definir a rota para o painel de firewall.
 */
$routes->connect('/firewall/panel/', [
    'controller' => 'FirewallPanel',
    'action' => 'entry'
]);

3. Criar um Controlador para o Painel de Firewall

Crie um controlador chamado FirewallPanelController e adicione o seguinte código a ele.

Exemplo:

$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
exit;

Se você tiver o CSRF ativado, adicione estas linhas:

Exemplo:

$panel->csrf(
    '_csrfToken',
    $this->request->getParam('_csrfToken')
);

O exemplo completo ficará assim:

Exemplo:

<?php

namespace App\Controller;

class FirewallPanelController extends AppController
{
    /**
     * Esta é a entrada do nosso Painel de Firewall.
     */
    public function entry()
    {
        // Acesse o Painel de Firewall.
        $panel = new \Shieldon\Firewall\Panel();

        $panel->csrf([
            '_csrfToken' => $this->request->getParam('_csrfToken')
        ]);

        $panel->entry();
        exit;
    }
}

É isso.

Você pode acessar o Painel de Firewall em /firewall/panel. Para visualizar a página, abra esta URL no seu navegador.

Painel de Controle

https://for.example.com/firewall/panel

O login padrão é shieldon_user e a senha é shieldon_pass. Após fazer login no Painel de Firewall, a primeira coisa que você deve fazer é alterar o login e a senha.

Se o Firewall Shieldon estiver ativado na seção de configuração do "Daemon", ele começará a monitorar seu site. Certifique-se de ter configurado as configurações corretamente.