CodeIgniterは軽量なMVCフレームワークです。まず、バージョン4は以前のバージョンと大きな違いがあるため、CodeIgniter 3について説明します。
このガイドでは、CodeIgniterアプリケーションでShieldonファイアウォールを実装するためのいくつかのヒントを共有します。
PHP Composerを使用してください:
composer require shieldon/shieldon
これにより、Shieldonに必要な依存関係もインストールされます:
CodeIgniter 3には、MVC(モデル-ビュー-コントローラ)のアーキテクチャパターンを処理するCI_Controller
というコアコントローラーがあります。
core
フォルダにMY_Controller
という親コントローラーを作成し、初期コードを追加することを強くお勧めします。
core
フォルダにMY_Controller.php
というファイルを作成しましょう。
class MY_Controller extends CI_Controller
{
/**
* コンストラクター。
*/
public function __construct()
{
parent::__construct();
}
}
コンストラクターに初期コードを配置して、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';
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/
app/Config/Filters.php
ファイルに、以下のコードを$aliases
プロパティに追加します:
'firewall' => \Shieldon\Firewall\Intergration\CodeIgniter4::class,
次に、before
配列内に文字列「firewall」を追加します:
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();
}
}
以上です!
ファイアウォールパネルには/firewall/panel
でアクセスできます。ページを表示するには、ブラウザでこのURLに移動してください。
https://yoursite.com/firewall/panel/
デフォルトのログインはshieldon_user
でパスワードはshieldon_pass
です。ファイアウォールパネルにログインした後、最初に行うべきことはログインとパスワードを変更することです。
Daemon
設定セクションでShieldonファイアウォールが有効になっている場合、ウェブサイトの監視が開始されます。設定を正しく行っているか確認してください。