O framework Slim é um dos meus favoritos. Como o Slim é um micro-framework, a implementação do Firewall Shieldon também é fácil. Sem mais delongas, vamos começar.
Use o PHP Composer:
composer require shieldon/shieldon
Isso também instalará as dependências necessárias para o Shieldon:
Você pode criar um middleware por conta própria ou simplesmente usar a classe de integração.
Exemplo:
class FirewallMiddleware
{
/**
* Classe de invocação de middleware de exemplo
*
* @param ServerRequest $request Requisição PSR-7
* @param RequestHandler $handler Manipulador de requisições PSR-15
*
* @return Response
*/
public function __invoke(Request $request, RequestHandler $handler): Response
{
$response = $handler->handle($request);
$firewall = new \Shieldon\Firewall\Firewall($request, $response);
// O diretório onde o Firewall Shieldon colocará seus arquivos.
$firewall->configure(__DIR__ . '/../cache/shieldon_firewall');
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
return $response;
}
}
Por exemplo, se você estiver usando o framework Slim 4, o código deve ser assim.
Exemplo:
$app->add(new FirewallMiddleware());
Ou, se você preferir usar a classe de integração, aqui está o código.
Exemplo:
$app->add(new \Shieldon\Firewall\Integration\Slim4);
Por exemplo, se você estiver usando o framework Slim 4, o código deve ser assim. Em seguida, você pode acessar a URL https://seusite.com/firewall/panel/
para fazer login no painel de controle.
Exemplo:
$app->any('/firewall/panel[/{params:.*}]', function (Request $request, Response $response, $args) {
$firewall = new \Shieldon\Firewall\Firewall($request);
// O diretório onde o Firewall Shieldon colocará seus arquivos.
// Deve ser o mesmo que o firewallMiddleware.
$firewall->configure(__DIR__ . '/../cache/shieldon_firewall');
// A URL base para o painel de controle.
$firewall->controlPanel('/firewall/panel/');
$panel = new \Shieldon\Firewall\Panel();
// Começar - Configure os campos CSRF se você tiver ativado o Slim-CSRF
$csrf = new \Slim\Csrf\Guard();
$nameKey = $csrf->getTokenNameKey();
$valueKey = $csrf->getTokenValueKey();
$csrfName = $request->getAttribute('csrf_name');
$csrfVale = $request->getAttribute('csrf_value');
$panel->csrf(
[$nameKey => $csrfName],
[$valueKey => $csrfVale]
);
// Fim - Slim-CSRF
$panel->entry();
});
Observação:
POST
e GET
devem ser aplicados ao seu site.POST
é necessário para resolver o CAPTCHA pelos usuários que foram temporariamente bloqueados.Isso é tudo.
O Shieldon possui uma classe de integração pronta para este middleware, basta usá-la seguindo as etapas a seguir.
Exemplo:
$app->add(new \Shieldon\Firewall\Integration\Slim3);
Por exemplo, se você estiver usando o esqueleto do Slim3, o código em middleware.php
ficará assim:
Exemplo:
<?php
use Slim\App;
return function (App $app) {
$app->add(new \Shieldon\Firewall\Integration\Slim3);
$app->add(new \Slim\Csrf\Guard);
};
Por exemplo, se você estiver usando o framework Slim 4, o código deve ser assim. Em seguida, você pode acessar a URL https://seusite.com/firewall/panel/
para fazer login no painel de controle.
Exemplo:
$app->map(['GET', 'POST'], '/firewall/panel[/{params:.*}]', function (Request $request, Response $response, array $args) {
$firewall = new \Shieldon\Firewall\Firewall($request);
// O diretório onde o Firewall Shieldon colocará seus arquivos.
// Deve ser o mesmo que o firewallMiddleware.
$firewall->configure(__DIR__ . '/../cache/shieldon_firewall');
// A URL base para o painel de controle.
$firewall->controlPanel('/firewall/panel/');
$panel = new \Shieldon\Firewall\Panel();
// Começar - Configure os campos CSRF se você tiver ativado o Slim-CSRF
$csrf = new \Slim\Csrf\Guard();
$nameKey = $csrf->getTokenNameKey();
$valueKey = $csrf->getTokenValueKey();
$csrfName = $request->getAttribute('csrf_name');
$csrfVale = $request->getAttribute('csrf_value');
$panel->csrf(
[$nameKey => $csrfName],
[$valueKey => $csrfVale]
);
// Fim - Slim-CSRF
$panel->entry();
});
Isso é tudo.
Você pode acessar o Painel de Firewall pelo /firewall/panel/
, para visualizar a página, acesse 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 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.