CodeIgniter

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.

Firewall im CodeIgniter Framework

Installation

Verwenden Sie PHP Composer:

composer require shieldon/shieldon

Dadurch werden auch die für Shieldon erforderlichen Abhängigkeiten installiert:

  • shieldon/psr-http Die PSR-7, 15, 17 Implementierung mit vollständiger Dokumentation und umfangreichem Testing.
  • shieldon/event-dispatcher Der einfachste Ereignis-Dispatcher.
  • shieldon/web-security Eine Sammlung von Funktionen im Zusammenhang mit Web-Sicherheit.
  • shieldon/messenger Eine Sammlung von Modulen zum Senden von Nachrichten an Drittanbieter-APIs oder -Dienste wie Telegram, Line, RocketChat, Slack, SendGrid, MailGun und mehr.

Implementierung

  • CodeIgniter 3
  • CodeIgniter 4

CodeIgniter 3

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.

1. MY_Controller

Erstellen Sie eine Datei namens MY_Controller.php im core-Verzeichnis.

class MY_Controller extends CI_Controller
{
    /**
     * Konstruktor.
     */
    public function __construct()
    {
        parent::__construct();
    }
}

2. Initialisierung der Firewall-Instanz

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';

3. Definieren Sie einen Controller für das Kontrollpanel

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/

CodeIgniter 4

1. Filter registrieren.

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'
    ],
];

2. Definieren Sie einen Controller für das Firewall-Kontrollpanel

<?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.

Kontrollpanel

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.