Dieser umfassende Leitfaden bietet einen detaillierten Überblick über den Einstieg in die Verwendung der Shieldon Firewall für Ihre Webanwendung. Lassen Sie uns beginnen.
Stellen Sie vor der Verwendung der Shieldon Firewall sicher, dass Ihr Server die folgenden Anforderungen erfüllt:
Die Shieldon Firewall kann über den PHP Composer installiert werden:
composer require shieldon/shieldon
Es gibt drei Hauptmethoden, um Shieldon in Ihrer Anwendung zu implementieren:
Jede Implementierungsmethode wird von praktischen Beispielen unter Verwendung beliebter Frameworks wie Slim 4, Laravel 6 und CodeIgniter 3 begleitet.
Beispiel: Slim 4 Framework
Shieldon kann als PSR-15-Middleware verwendet werden, wie im Beispiel mit dem Slim 4 Framework gezeigt.
class FirewallMiddleware
{
/**
* Beispiel Middleware aufrufbare Klasse
*
* @param ServerRequest $request PSR-7-Anfrage
* @param RequestHandler $handler PSR-15-Anfragehandler
*
* @return Response
*/
public function __invoke(Request $request, RequestHandler $handler): Response
{
$response = $handler->handle($request);
$firewall = new \Shieldon\Firewall\Firewall($request, $response);
// Das Verzeichnis, in dem die Shieldon Firewall ihre Dateien ablegt.
$firewall->configure(__DIR__ . '/../cache/shieldon_firewall');
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
return $response;
}
}
Wenn Sie beispielsweise das Slim 4 Framework verwenden, sollte der Code wie folgt aussehen.
$app->add(new FirewallMiddleware());
Wenn Sie beispielsweise das Slim 4 Framework verwenden, sollte der Code wie folgt aussehen. Sie können dann über die URL https://yourwebsite.com/firewall/panel
auf das Kontrollpanel zugreifen.
$app->any('/firewall/panel[/{params:.*}]', function (Request $request, Response $response, $args) {
$firewall = new \Shieldon\Firewall\Firewall($request, $response);
// Das Verzeichnis, in dem die Shieldon Firewall ihre Dateien ablegt.
// Muss mit FirewallMiddleware übereinstimmen.
$firewall->configure(__DIR__ . '/../cache/shieldon_firewall');
$panel = new \Shieldon\Firewall\Panel();
// Die Basis-URL für das Kontrollpanel.
$panel->entry('/firewall/panel/');
});
Hinweis:
POST
und GET
sollten beide für Ihre Website gelten.POST
-Methode wird benötigt, um von vorübergehend blockierten Benutzern CAPTCHAs zu lösen.Beispiel: Laravel 6 Framework
Sie können Shieldon in der Bootstrap-Phase Ihrer Anwendung initialisieren, wie im Beispiel mit dem Laravel 6 Framework gezeigt.
Fügen Sie in Ihrer bootstrap/app.php
-Datei nach <?php
den folgenden Code hinzu.
/*
|--------------------------------------------------------------------------
| Shieldon Firewall ausführen
|--------------------------------------------------------------------------
|
| Die Shieldon Firewall überwacht alle HTTP-Anfragen, die an Ihre Website gesendet werden.
| Durch das Ausführen der Shieldon Firewall vor der Initialisierung von Laravel wird eine mögliche
| Konflikte mit den integrierten Funktionen von Laravel vermieden.
*/
if (isset($_SERVER['REQUEST_URI'])) {
// Dieses Verzeichnis muss beschreibbar sein.
// Wir platzieren es im `storage/shieldon_firewall`-Verzeichnis.
$storage = __DIR__ . '/../storage/shieldon_firewall';
$firewall = new \Shieldon\Firewall\Firewall();
$firewall->configure($storage);
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
}
Route::any('/firewall/panel/{path?}', function() {
$panel = new \Shieldon\Firewall\Panel();
$panel->csrf(['_token' => csrf_token()]);
// Der Einstiegspunkt muss mit der definierten Route übereinstimmen.
$panel->entry('/firewall/panel/');
})->where('path', '(.*)');
Beispiel: CodeIgniter 3 Framework
Shieldon kann auch in einem übergeordneten Controller implementiert werden, von dem andere Controller erben, wie im Beispiel mit dem CodeIgniter 3 Framework gezeigt.
Erstellen Sie eine neue Datei mit dem Namen MY_Controller.php
im application/core/
-Verzeichnis. Dies wird Ihr übergeordneter Controller sein.
Hier ist die grundlegende Struktur für MY_Controller
:
class MY_Controller extends CI_Controller
{
public function __construct()
{
parent::__construct();
}
}
Initialisieren Sie als Nächstes die Shieldon Firewall im Konstruktor von MY_Controller
. Dadurch wird sichergestellt, dass die Shieldon Firewall für jeden Controller initialisiert wird, der MY_Controller
erweitert.
class MY_Controller extends CI_Controller
{
public function __construct()
{
parent::__construct();
// Composer-Autoloader
require_once APPPATH . '../vendor/autoload.php';
// Dieses Verzeichnis muss beschreibbar sein.
$storage = APPPATH . 'cache/shieldon_firewall';
$firewall = new \Shieldon\Firewall\Firewall();
$firewall->configure($storage);
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
}
/**
* Shieldon Firewall-Schutz.
*/
public function firewall()
{
$firewall = \Shieldon\Container::get('firewall');
$firewall->run();
}
}
Definieren Sie als Nächstes einen Controller für das Shieldon Firewall-Kontrollpanel. In diesem Beispiel erstellen Sie einen Controller namens Firewall
.
Erstellen Sie eine neue Datei Firewall.php
im application/controllers/
-Verzeichnis und fügen Sie den folgenden Code hinzu:
class Firewall extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
/**
* Dies ist der Einstiegspunkt für unser Firewall-Kontrollpanel.
*/
public function panel()
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry('/firewall/panel/');
}
}
Jetzt wird die Shieldon Firewall in Ihrem MY_Controller
initialisiert und jeder Controller, der MY_Controller
erweitert und die Methode firewall
ausführt, hat darauf Zugriff. Darüber hinaus haben Sie einen Firewall-Controller definiert, der eine Methode panel
enthält, die Ihr Einstiegspunkt zum Shieldon Firewall-Kontrollpanel ist.
Unabhängig von der gewählten Implementierungsmethode wird beim Zugriff auf https://yoursite.com/firewall/panel/
die Anmeldeseite angezeigt.
Der Standard-Benutzername und das Standard-Passwort lauten shieldon_user
bzw. shieldon_pass
. Aus Sicherheitsgründen wird empfohlen, nach dem ersten Login die Anmeldeinformationen zu ändern.