Yii 2

Dans ce guide, je vais vous donner quelques idées sur la façon d'implémenter le pare-feu Shieldon dans votre application Yii.

Firewall dans le framework Yii

Installation

Utilisez PHP Composer :

composer require shieldon/shieldon

Cela installera également les dépendances requises pour Shieldon :

  • shieldon/psr-http L'implémentation PSR-7, 15, 17 avec une documentation complète et des tests approfondis.
  • shieldon/event-dispatcher Le dispatcher d'événements le plus simple.
  • shieldon/web-security Une collection de fonctions liées à la sécurité web.
  • shieldon/messenger Une collection de modules pour l'envoi de messages à des API ou des services tiers, tels que Telegram, Line, RocketChat, Slack, SendGrid, MailGun, et plus encore.

Implémentation

Yii 2

1. Avant d'initialiser le noyau

Dans votre fichier public/index.php, avant cette ligne :

require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';

Ajoutez le code suivant :

Exemple :

/*
|--------------------------------------------------------------------------
| Exécuter le pare-feu Shieldon
|--------------------------------------------------------------------------
|
| Le pare-feu Shieldon surveillera toutes les requêtes HTTP arrivant sur votre site web.
| L'exécution du pare-feu Shieldon avant d'initialiser Yii évitera les éventuels conflits avec les fonctions intégrées de Yii.
*/

if (isset($_SERVER['REQUEST_URI'])) {
    $storage = __DIR__ . '/../runtime/shieldon';

    $firewall = new \Shieldon\Firewall\Firewall();
    $firewall->configure($storage);

    // L'URL de base pour le panneau de contrôle.
    $firewall->controlPanel('/firewall/panel/');

    $response = $firewall->run();

    if ($response->getStatusCode() !== 200) {
        $httpResolver = new \Shieldon\Firewall\HttpResolver();
        $httpResolver($response);
    }
}

2. Définir une route pour le panneau de contrôle du pare-feu

Créez un contrôleur nommé FirewallPanelController.

Exemple :

<?php

namespace app\controllers;

use yii\web\Controller;

class FirewallController extends Controller
{
    public function beforeAction($action)
    {
        $this->enableCsrfValidation = false;

        return parent::beforeAction($action);
    }

    /**
     * Le point d'entrée du panneau de contrôle du pare-feu.
     *
     * @return string
     */
    public function actionPanel()
    {
        $panel = new \Shieldon\Firewall\Panel();
        $panel->entry();
    }
}

Assurez-vous que enablePrettyUrl est défini sur true dans votre fichier config/web.php.

Exemple :

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        'firewall/panel/' => 'firewall/panel',
        'firewall/panel/<slug:.*>' => 'firewall/panel',
    ],
],

C'est tout.

Vous pouvez accéder au panneau de contrôle du pare-feu en visitant /firewall-panel dans votre navigateur.

Panneau de Contrôle

https://yourwebsite.com/firewall-panel

Le nom d'utilisateur par défaut est shieldon_user, et le mot de passe est shieldon_pass. Après vous être connecté au panneau de contrôle du pare-feu, la première chose à faire est de changer le nom d'utilisateur et le mot de passe.

Si le pare-feu Shieldon est activé dans la section de configuration Daemon, il commencera à surveiller votre site web. Assurez-vous d'avoir correctement configuré les paramètres.