CodeIgniter ist ein leichtgewichtiges MVC-Framework. Zunächst werde ich CodeIgniter 3 besprechen, da Version 4 signifikante Unterschiede zu den früheren Versionen aufweist.
In diesem Leitfaden werde ich Ihnen einige Tipps zur Implementierung der Shieldon Firewall in Ihrer CodeIgniter-Anwendung geben.
Verwenden Sie PHP Composer:
composer require shieldon/shieldon
Dadurch werden auch die für Shieldon erforderlichen Abhängigkeiten installiert:
CodeIgniter 3 hat einen Kern-Controller namens CI_Controller
, der das MVC (Model-View-Controller) Architekturmuster behandelt.
Ich empfehle dringend, einen übergeordneten Controller namens MY_Controller
im core
-Verzeichnis zu erstellen und den Initialcode hinzuzufügen.
Erstellen Sie eine Datei namens MY_Controller.php
im core
-Verzeichnis.
class MY_Controller extends CI_Controller
{
/**
* Konstruktor.
*/
public function __construct()
{
parent::__construct();
}
}
Platzieren Sie den Initialcode im Konstruktor, damit jeder Controller, der MY_Controller erweitert, die Shieldon Firewall initialisiert und die Methode $this->firewall()
zur Verfügung hat.
class MY_Controller extends CI_Controller
{
/**
* Konstruktor.
*/
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);
// 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);
}
}
/**
* Shieldon Firewall-Schutz.
*/
public function firewall()
{
$firewall = \Shieldon\Container::get('firewall');
$firewall->run();
}
}
Hinweis
Für optimale Sicherheit sollten sowohl das System- als auch das Anwendungsverzeichnis über dem Webstammverzeichnis platziert werden, damit sie nicht direkt über einen Browser zugänglich sind.
Wenn sich Ihr Anwendungsverzeichnis auf derselben Ebene wie index.php befindet, verschieben Sie das $storage
-Verzeichnis an einen sicheren Ort. Zum Beispiel:
$storage = APPPATH . '../shieldon';
Wir benötigen einen Controller, um zum Shieldon Firewall-Kontrollpanel zu gelangen. In diesem Beispiel definieren wir einen Controller namens Firewall
.
class Firewall extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
/**
* Dies ist der Einstieg in unser Firewall-Panel.
*/
public function panel()
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
}
}
Nun können Sie über die folgende URL auf das Firewall-Kontrollpanel zugreifen:
https://yoursite.com/firewall/panel/
Fügen Sie in Ihrer app/Config/Filters.php
-Datei den folgenden Code zur $aliases
-Eigenschaft hinzu:
'firewall' => \Shieldon\Firewall\Intergration\CodeIgniter4::class,
Fügen Sie dann den String firewall zum $globals
-Array innerhalb des before-Arrays hinzu:
public $globals = [
'before' => [
'firewall'
],
];
<?php
namespace App\Controllers;
class Firewall extends BaseController
{
public function panel()
{
$panel = new \Shieldon\Firewall\Panel();
$panel->csrf([csrf_token() => csrf_hash()]);
$panel->entry();
}
}
Das war's!
Sie können auf das Firewall-Kontrollpanel unter /firewall/panel
zugreifen. Um die Seite anzuzeigen, rufen Sie diese URL in Ihrem Browser auf.
https://yoursite.com/firewall/panel/
Der Standard-Login lautet shieldon_user
und das Passwort lautet shieldon_pass
. Nach dem Anmelden im Firewall-Kontrollpanel sollten Sie als erstes den Login und das Passwort ändern.
Wenn die Shieldon Firewall in der Einstellung Daemon
aktiviert ist, überwacht sie Ihre Website. Stellen Sie sicher, dass Sie die Einstellungen korrekt konfiguriert haben.