CodeIgniter

CodeIgniterは軽量なMVCフレームワークです。まず、バージョン4は以前のバージョンと大きな違いがあるため、CodeIgniter 3について説明します。

このガイドでは、CodeIgniterアプリケーションでShieldonファイアウォールを実装するためのいくつかのヒントを共有します。

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

インストール

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やサービスにメッセージを送信するためのモジュールのコレクション。

実装方法

  • CodeIgniter 3
  • CodeIgniter 4

CodeIgniter 3

CodeIgniter 3には、MVC(モデル-ビュー-コントローラ)のアーキテクチャパターンを処理するCI_Controllerというコアコントローラーがあります。

coreフォルダにMY_Controllerという親コントローラーを作成し、初期コードを追加することを強くお勧めします。

1. MY_Controller

coreフォルダにMY_Controller.phpというファイルを作成しましょう。

class MY_Controller extends CI_Controller
{
    /**
     * コンストラクター。
     */
    public function __construct()
    {
        parent::__construct();
    }
}

2. ファイアウォールのインスタンスを初期化する

コンストラクターに初期コードを配置して、MY_Controllerを拡張するコントローラーにはShieldonファイアウォールが初期化され、$this->firewall()メソッドが利用可能になるようにしましょう。

class MY_Controller extends CI_Controller
{
    /**
     * コンストラクター。
     */
    public function __construct()
    {
        parent::__construct();

        // Composerのオートローダー
        require_once APPPATH . '../vendor/autoload.php';

        // このディレクトリは書き込み可能である必要があります。
        $storage = APPPATH . 'cache/shieldon_firewall';

        $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);
        }
    }

    /**
     * Shieldonファイアウォールの保護。
     */
    public function firewall()
    {
        $firewall = \Shieldon\Container::get('firewall');
        $firewall->run();
    }
}

注意

最適なセキュリティのために、システムフォルダとアプリケーションフォルダはWebルートの上に配置されるべきです。これにより、直接ブラウザからアクセスできなくなります。

もしアプリケーションフォルダがindex.phpと同じレベルにある場合は、安全な場所に$storageディレクトリを移動してください。例えば:

$storage =  APPPATH . '../shieldon';

3. コントロールパネル用のコントローラーを定義する

Shieldonファイアウォールのコントロールパネルにアクセスするためには、コントローラーが必要です。この例では、Firewallという名前のコントローラーを定義します。

class Firewall extends MY_Controller
{
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * これはファイアウォールパネルの入口です。
     */
    public function panel()
    {
        $panel = new \Shieldon\Firewall\Panel();
        $panel->entry();
    }
}

これで、次のURLを使用してファイアウォールパネルにアクセスできます:

https://yoursite.com/firewall/panel/

CodeIgniter 4

1. フィルターを登録する

app/Config/Filters.phpファイルに、以下のコードを$aliasesプロパティに追加します:

'firewall' => \Shieldon\Firewall\Intergration\CodeIgniter4::class,

次に、before配列内に文字列「firewall」を追加します:

public $globals = [
    'before' => [
        'firewall'
    ],
];

2. ファイアウォールパネル用のコントローラーを定義する

<?php 

namespace App\Controllers;

class Firewall extends BaseController
{
    public function panel()
    {
        $panel = new \Shieldon\Firewall\Panel();
        $panel->csrf([csrf_token() => csrf_hash()]);
        $panel->entry();
    }
}

以上です!

ファイアウォールパネルには/firewall/panelでアクセスできます。ページを表示するには、ブラウザでこのURLに移動してください。

コントロールパネル

https://yoursite.com/firewall/panel/

デフォルトのログインはshieldon_userでパスワードはshieldon_passです。ファイアウォールパネルにログインした後、最初に行うべきことはログインとパスワードを変更することです。

Daemon設定セクションでShieldonファイアウォールが有効になっている場合、ウェブサイトの監視が開始されます。設定を正しく行っているか確認してください。