Symfony

Symfony é um conjunto de componentes PHP reutilizáveis e um framework PHP usado para construir aplicações web, APIs, microserviços e serviços web.

Este guia foi testado com sucesso na versão 4.3, mas também deve funcionar com versões mais antigas.

Symfony não possui um conceito de middleware, portanto você pode criar um controlador pai para implementar o Firewall Shieldon seguindo os passos do nosso guia do CodeIgniter.

Se você não quiser inicializar o Firewall Shieldon em um controlador pai, você pode seguir os passos do modo Bootstrap fornecidos abaixo.

Firewall no framework Symfony

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 extensivos.
  • shieldon/event-dispatcher O despachante de eventos mais simples.
  • shieldon/web-security Uma coleção de funções relacionadas à segurança na web.
  • shieldon/messenger Uma coleção de módulos para o envio de mensagens para APIs ou serviços de terceiros, como Telegram, Line, RocketChat, Slack, SendGrid, MailGun e muito mais.

Implementação

Bootstrap

1. Antes de inicializar o Kernel

Em seu arquivo config/bootstrap.php, após esta linha:

require dirname(__DIR__).'/vendor/autoload.php';

Adicione o seguinte código:

Exemplo:

/*
|--------------------------------------------------------------------------
| Executar o Firewall Shieldon
|--------------------------------------------------------------------------
|
| O Firewall Shieldon irá monitorar todas as requisições HTTP que chegam ao seu site.
*/
if (isset($_SERVER['REQUEST_URI'])) {

    // Este diretório precisa ter permissão de escrita.
    $storage = __DIR__ . '/../storage/shieldon';

    $firewall = new \Shieldon\Firewall\Firewall();
    $firewall->configure($storage);

    // A URL base para o painel de controle.
    $firewall->controlPanel('/firewall/panel/');

    $response = $firewall->run();

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

2. Definir uma Rota para o Painel de Controle do Firewall

Crie um controlador chamado FirewallPanelController executando o seguinte comando.

Exemplo:

php bin/console make:controller FirewallPanelController

Adicione as seguintes linhas na classe do controlador FirewallPanelController:

Exemplo:

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

Se você tiver CSRF ativado, adicione essas linhas:

Exemplo:

$csrf = $this->container->get('security.csrf.token_manager');
$token = $csrf->refreshToken('key');

O exemplo completo ficará assim:

Exemplo:

<?php

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

class FirewallPanelController extends AbstractController
{
    /**
     * @Route("/firewall/panel/", name="firewall_panel")
     */
    public function panel()
    {
        $panel = new \Shieldon\Firewall\Panel();

        // Se você tiver o `symfony/security-csrf` instalado.
        $csrf = $this->container->get('security.csrf.token_manager');
        $token = $csrf->refreshToken('key')->getValue();

        $panel->csrf(['_token' => $token]);
        $panel->entry();
        exit;
    }

    /**
     * @Route("/firewall/panel/{class}/{method}", name="firewall_panel_page")
     */
    public function page()
    {
        $this->panel();
    }
}

É isso.

Você pode acessar o Painel de Controle do Firewall através de /firewall/panel. Para ver a página, vá para esta URL em seu navegador.

Painel de Controle

https://seusite.com/firewall/panel

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

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