Yii 2

このガイドでは、YiiアプリケーションにShieldonファイアウォールを実装する方法についてのアイデアを提供します。

Yiiフレームワークのファイアウォール

インストール

PHP Composerを使用します:

composer require shieldon/shieldon

これにより、Shieldonに必要な依存関係もインストールされます:

  • shieldon/psr-http フルドキュメントと包括的なテストを備えたPSR-7、15、17の実装。
  • shieldon/event-dispatcher 最もシンプルなイベントディスパッチャー。
  • shieldon/web-security ウェブセキュリティに関連する機能のコレクション。
  • shieldon/messenger Telegram、Line、RocketChat、Slack、SendGrid、MailGunなど、サードパーティAPIやサービスにメッセージを送信するためのモジュールのコレクション。

実装

Yii 2

1. カーネルの初期化前に

public/index.phpの次の行よりも前に、以下のコードを追加します:

例:

/*
|--------------------------------------------------------------------------
| Shieldonファイアウォールの実行
|--------------------------------------------------------------------------
|
| Shieldonファイアウォールは、ウェブサイトに寄せられるすべてのHTTPリクエストを監視します。
| Yiiの初期化の前にShieldonファイアウォールを実行すると、Yiiの組み込み機能との競合を回避できます。
*/

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

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

    // コントロールパネルのベースURL
    $firewall->controlPanel('/firewall/panel/');

    $response = $firewall->run();

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

2. ファイアウォールパネルのルートを定義する

FirewallPanelControllerという名前のコントローラを作成します。

例:

<?php

namespace app\controllers;

use yii\web\Controller;

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

        return parent::beforeAction($action);
    }

    /**
     * ファイアウォールパネルのエントリーポイント。
     *
     * @return string
     */
    public function actionPanel()
    {
        $panel = new \Shieldon\Firewall\Panel();
        $panel->entry();
    }
}

config/web.phpファイルでenablePrettyUrlがtrueに設定されていることを確認してください。

例:

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

以上です。

ブラウザで/firewall-panelを訪れることでファイアウォールパネルにアクセスできます。

コントロールパネル

https://yourwebsite.com/firewall-panel

デフォルトのログインはshieldon_userで、パスワードはshieldon_passです。ファイアウォールパネルにログインした後は、まずログインとパスワードを変更することをお勧めします。

Shieldonファイアウォールが「Daemon」設定セクションで有効になっている場合、ウェブサイトのモニタリングが開始されます。設定が正しく行われていることを確認してください。