Dieser Leitfaden hilft Ihnen bei der Implementierung der Shieldon Firewall in Ihrer Laravel-Anwendung. Die folgenden Schritte wurden mit Laravel 5 und 6 getestet.
Diese Tipps sind nicht der einzige Weg, um es zu tun, bieten Ihnen jedoch einige Ideen.
Verwenden Sie PHP Composer:
composer require shieldon/shieldon
Dadurch werden auch die für Shieldon erforderlichen Abhängigkeiten installiert:
Sie können Shieldon als Middleware verwenden oder Shieldon in der Bootstrap-Phase Ihrer Webanwendung implementieren.
Initialisieren Sie Shieldon in der Bootstrap-Phase Ihrer Anwendung, direkt nachdem der Composer-Autoloader eingebunden wurde. Auf diese Weise wird eine mögliche Konflikte mit den integrierten Funktionen von Laravel vermieden.
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.
| Die Ausführung der Shieldon Firewall vor der Initialisierung von Laravel vermeidet mögliche Konflikte mit den integrierten Funktionen von Laravel.
*/
if (isset($_SERVER['REQUEST_URI'])) {
// Dieses Verzeichnis muss beschreibbar sein.
// Wir legen es im Verzeichnis `storage/shieldon_firewall` ab.
$storage = __DIR__ . '/../storage/shieldon_firewall';
$firewall = new \Shieldon\Firewall\Firewall();
$firewall->configure($storage);
// Die Basis-URL für das Kontrollpanel.
$firewall->controlPanel('/firewall/panel/');
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
}
Fügen Sie der Datei routes/web.php
die folgende Route hinzu:
Route::any('/firewall/panel/{path?}', function() {
$panel = new \Shieldon\Firewall\Panel();
$panel->csrf(['_token' => csrf_token()]);
$panel->entry();
})->where('path', '(.*)');
Wenn Sie diese Methode verwenden, wird die Shieldon Firewall im globalen Umfang ausgeführt. Sie können jedoch eine Ausschlussliste für die URLs festlegen, die von der Shieldon Firewall ignoriert werden sollen.
Sie können eine Middleware selbst definieren oder die bereitgestellte Integration-Klasse verwenden.
Wenn Sie sich für die Verwendung der Integrationsklasse entscheiden, überspringen Sie Schritt 1 und gehen Sie zu Schritt 2-2.
Führen Sie den folgenden Befehl aus, um eine Middleware mit dem Namen ShieldonFirewall
zu erstellen:
php artisan make:middleware ShieldonFirewall
Aktualisieren Sie dann die handle
-Methode der Middleware-Klasse ShieldonFirewall
mit folgendem Code:
<?php
namespace App\Http\Middleware;
use Closure;
class ShieldonFirewall
{
/**
* Behandeln einer eingehenden Anfrage.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$firewall = new \Shieldon\Firewall\Firewall();
// Das Verzeichnis, in dem Shieldon Firewall seine Dateien ablegt.
$storage = storage_path('shieldon_firewall');;
$firewall->configure($storage);
// Basis-URL für das Kontrollpanel.
$firewall->controlPanel('/firewall/panel/');
$firewall->getKernel()->setCaptcha(
new Csrf([
'name' => '_token',
'value' => csrf_token(),
])
);
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
return $next($request);
}
}
Aktualisieren Sie die Datei app/Http/Kernel.php
und fügen Sie der $routeMiddleware
-Eigenschaft folgende Zeile hinzu:
Für Schritt 2-1:
'firewall' => \App\Http\Middleware\ShieldonFirewall::class,
Für Schritt 2-2 (Verwendung der Integrationsklasse):
Wenn Sie die Integrationsklasse verwenden, sieht der Code folgendermaßen aus:
'firewall' => \Shieldon\Firewall\Integration\Laravel::class,
Fügen Sie der Datei routes/web.php
die folgende Route hinzu:
Route::any('/firewall/panel/{path?}', function() {
$panel = new \Shieldon\Firewall\Panel();
$panel->csrf(['_token' => csrf_token()]);
$panel->entry();
})->where('path', '(.*)');
Die Shieldon Firewall beginnt mit der Überwachung Ihrer Website, wenn sie in den Einstellungen für den Daemon
aktiviert wird.
firewall
-Middleware zuWeisen Sie der Route, die Sie schützen möchten, die firewall
-Middleware zu. Zum Beispiel:
Route::any('/', function () {
return view('welcome');
})->middleware('firewall');
Das ist alles.
Sie können auf das Kontrollpanel zugreifen, indem Sie /firewall/panel/
in Ihrem Browser öffnen.
https://for.example.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 Benutzernamen 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.