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.
Use o PHP Composer:
composer require shieldon/shieldon
Isso também instalará as dependências necessárias para o Shieldon:
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);
}
}
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.
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.