Yii 2

Neste guia, fornecerei algumas ideias sobre como implementar o Firewall Shieldon em sua aplicação Yii.

Firewall no Framework Yii

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 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

Yii 2

1. Antes de inicializar o Kernel

No seu arquivo public/index.php, antes desta linha:

require __DIR__ . '/../vendor/yiisoft/yii2/Yii.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 website.
| Executar o Firewall Shieldon antes de inicializar o Yii irá evitar possíveis conflitos com as funções internas do Yii.
*/

if (isset($_SERVER['REQUEST_URI'])) {
    $storage = __DIR__ . '/../runtime/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 do Firewall

Crie um controlador chamado FirewallPanelController.

Exemplo:

<?php

namespace app\controllers;

use yii\web\Controller;

class FirewallController extends Controller
{
    public function beforeAction($action)
    {
        $this->enableCsrfValidation = false;

        return parent::beforeAction($action);
    }

    /**
     * O ponto de entrada do Painel do Firewall.
     *
     * @return string
     */
    public function actionPanel()
    {
        $panel = new \Shieldon\Firewall\Panel();
        $panel->entry();
    }
}

Certifique-se de que enablePrettyUrl esteja definido como true no seu arquivo config/web.php.

Exemplo:

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        'firewall/panel/' => 'firewall/panel',
        'firewall/panel/<slug:.*>' => 'firewall/panel',
    ],
],

Isso é tudo.

Você pode acessar o Painel do Firewall visitando /firewall-panel no 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 do 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 Daemon, ele começará a monitorar o seu website. Certifique-se de ter configurado corretamente as configurações.