Il framework Zend offre ufficialmente due tipi di scheletri: Zend MVC e Zend Expressive.
Indipendentemente dallo scheletro che stai utilizzando, questa guida potrebbe darti alcune idee su come implementare il firewall Shieldon. Tieni presente che non sono sicuro quale sia considerato il metodo migliore in Zend, quindi puoi scegliere il metodo che preferisci.
Utilizza PHP Composer:
composer require shieldon/shieldon
Questo installerà anche le dipendenze richieste per Shieldon:
Questo è un esempio che mostra come utilizzare un middleware PSR-15 nello scheletro Zend Expressive.
Esiste una classe di integrazione pronta per Zend Expressive.
Nel tuo file pipeline.php
, aggiungi questa riga:
Esempio:
$app->pipe(\Shieldon\Firewall\Integration\ZendPsr15::class);
Vai alla directory App/src/Handler
e crea un file PHP chiamato FirewallPanelHandler
.
Copia il seguente testo e incollalo in quel file.
Esempio:
<?php
declare(strict_types=1);
namespace App\Handler;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Zend\Diactoros\Response;
/**
* Gestore del Pannello del Firewall
* Se hai CSRF abilitato, assicurati di passare il token CSRF al pannello di controllo.
*/
class FirewallPanelHandler implements RequestHandlerInterface
{
public function handle(ServerRequestInterface $request): ResponseInterface
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
return new Response();
}
}
Nel tuo file route.php
, aggiungi questa riga:
Esempio:
// Inizio - Firewall Shieldon
$app->route('/firewall/panel/', App\Handler\FirewallPanelHandler::class, ['GET', 'POST']);
foreach(\Shieldon\Firewall\Panel::getRoutes() as $route) {
$app->route("/firewall/panel/$route/", App\Handler\FirewallPanelHandler::class, ['GET', 'POST']);
}
// Fine - Firewall Shieldon
E questo è tutto.
Non sono sicuro della versione del framework Zend che stai utilizzando, quindi fornirò istruzioni che funzionano con la maggior parte delle versioni di Zend.
Nel tuo file public/index.php
, sotto questa riga:
include __DIR__ . '/../vendor/autoload.php';
Aggiungi il seguente codice:
/*
|--------------------------------------------------------------------------
| Esegui il Firewall Shieldon
|--------------------------------------------------------------------------
|
| Il Firewall Shieldon monitorerà tutte le richieste HTTP che arrivano al tuo sito web.
|
*/
if (isset($_SERVER['REQUEST_URI'])) {
// Questa directory deve avere i permessi di scrittura.
$storage = dirname($_SERVER['SCRIPT_FILENAME']) . '/../shieldon_firewall';
$firewall = new \Shieldon\Firewall\Firewall();
$firewall->configure($storage);
$firewall->controlPanel('/firewall/panel');
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
}
Il passo successivo è creare un controller per il pannello di controllo.
Crea un controller chiamato FirewallController
.
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
class FirewallController extends AbstractActionController
{
/**
* Il punto di ingresso del Pannello del Firewall.
*/
public function panelAction()
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
}
}
Apri il file module.config.php
situato qui:
module/Application/config/module.config.php
(3-1) All'interno dell'array ['router']['routes']
, aggiungi il seguente codice:
Esempio:
'firewallpanel' => [
'type' => Segment::class,
'options' => [
'route' => '/firewall/panel[:slug]',
'constraints' => [
'slug' => '[a-zA-Z0-9\/]*',
],
'defaults' => [
'controller' => Controller\FirewallController::class,
'action' => 'panel',
],
],
],
(3-2) All'interno dell'array ['controllers']['factories']
, aggiungi il seguente codice:
Controller\FirewallController::class => InvokableFactory::class,
E questo è tutto.
Puoi accedere al Pannello del Firewall visitando /firewall/panel/
. Per visualizzare la pagina, vai su questo URL nel tuo browser.
https://yourwebsite.com/firewall/panel
Il login predefinito è shieldon_user
, e la password è shieldon_pass
. Dopo aver effettuato l'accesso al Pannello del Firewall, la prima cosa da fare è cambiare il login e la password.
Se il Firewall Shieldon è abilitato nella sezione delle impostazioni del Daemon
, inizierà a monitorare il tuo sito web. Assicurati di aver configurato correttamente le impostazioni.