Das Zend-Framework bietet offiziell zwei Arten von Skeletten: Zend MVC und Zend Expressive.
Unabhängig vom verwendeten Skelett könnte Ihnen dieser Leitfaden einige Ideen geben, wie Sie das Shieldon-Firewall implementieren können. Bitte beachten Sie, dass ich nicht sicher bin, welche Methode in Zend als bewährte Vorgehensweise gilt, daher können Sie die von Ihnen bevorzugte Methode wählen.
Verwenden Sie PHP Composer:
composer require shieldon/shieldon
Dies installiert auch die für Shieldon erforderlichen Abhängigkeiten:
Hier ist ein Beispiel, das zeigt, wie Sie in Zend Expressive ein PSR-15-Middleware verwenden können.
Es gibt eine Integrationsklasse, die für Zend Expressive bereitsteht.
Fügen Sie in Ihrer pipeline.php
diese Zeile hinzu:
Beispiel:
$app->pipe(\Shieldon\Firewall\Integration\ZendPsr15:class);
Gehen Sie zum Verzeichnis App/src/Handler
und erstellen Sie eine PHP-Datei namens FirewallPanelHandler
.
Kopieren Sie den untenstehenden Text und fügen Sie ihn in diese Datei ein.
Beispiel:
<?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;
/**
* Firewall-Panel-Handler
* Wenn CSRF aktiviert ist, stellen Sie sicher, dass das CSRF-Token an das Kontrollpanel übergeben wird.
*/
class FirewallPanelHandler implements RequestHandlerInterface
{
public function handle(ServerRequestInterface $request): ResponseInterface
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
return new Response();
}
}
Fügen Sie in Ihrer route.php
diese Zeile hinzu:
Beispiel:
// Beginn - Shieldon-Firewall
$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']);
}
// Ende - Shieldon-Firewall
Das ist alles.
Ich bin mir nicht sicher, welche Version des Zend Frameworks Sie verwenden, daher werde ich Anweisungen geben, die mit den meisten Versionen von Zend funktionieren.
In Ihrer public/index.php
unter dieser Zeile:
include __DIR__ . '/../vendor/autoload.php';
fügen Sie den folgenden Code hinzu:
/*
|--------------------------------------------------------------------------
| Shieldon-Firewall ausführen
|--------------------------------------------------------------------------
|
| Die Shieldon-Firewall überwacht alle HTTP-Anfragen an Ihre Website.
|
*/
if (isset($_SERVER['REQUEST_URI'])) {
// Dieses Verzeichnis muss beschreibbar sein.
$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);
}
}
Der nächste Schritt besteht darin, einen Controller für das Kontrollpanel zu erstellen.
Erstellen Sie einen Controller mit dem Namen FirewallController
.
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
class FirewallController extends AbstractActionController
{
/**
* Der Einstiegspunkt des Firewall-Panels.
*/
public function panelAction()
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
}
}
Öffnen Sie die Datei module.config.php
, die sich hier befindet:
module/Application/config/module.config.php
(3-1) Fügen Sie innerhalb des Arrays ['router']['routes']
den folgenden Code hinzu:
Beispiel:
'firewallpanel' => [
'type' => Segment::class,
'options' => [
'route' => '/firewall/panel[:slug]',
'constraints' => [
'slug' => '[a-zA-Z0-9\/]*',
],
'defaults' => [
'controller' => Controller\FirewallController::class,
'action' => 'panel',
],
],
],
(3-2) Fügen Sie innerhalb des Arrays ['controllers']['factories']
den folgenden Code hinzu:
Controller\FirewallController::class => InvokableFactory::class,
Das ist alles.
Sie können auf das Firewall-Panel zugreifen, indem Sie /firewall/panel/
besuchen. Gehen Sie in Ihrem Browser zu dieser URL, um die Seite anzuzeigen.
https://yourwebsite.com/firewall/panel
Der Standard-Login ist shieldon_user
und das Passwort ist shieldon_pass
. Nachdem Sie sich im Firewall-Panel angemeldet haben, sollten Sie als erstes den Login und das Passwort ändern.
Wenn die Shieldon-Firewall in den Einstellungen für den Daemon
aktiviert ist, überwacht sie Ihre Website. Stellen Sie sicher, dass Sie die Einstellungen korrekt konfiguriert haben.