Symfonyは再利用可能なPHPコンポーネントとPHPフレームワークであり、Webアプリケーション、API、マイクロサービス、Webサービスの構築に使用されます。
このガイドはバージョン4.3
での動作確認済みですが、以前のバージョンでも動作するはずです。
Symfonyにはミドルウェアのコンセプトが存在しないため、CodeIgniterガイドの手順と同様に、親コントローラを作成してShieldonファイアウォールを実装することができます。
親コントローラでShieldonファイアウォールを初期化することが好ましくない場合は、以下に示すBootstrapモードの手順に従ってください。
PHP Composerを使用します:
composer require shieldon/shieldon
これにより、Shieldonに必要な依存関係もインストールされます:
config/bootstrap.php
ファイルの次の行の後に、次のコードを追加してください:
例:
require dirname(__DIR__).'/vendor/autoload.php';
/*
|--------------------------------------------------------------------------
| Shieldonファイアウォールを実行
|--------------------------------------------------------------------------
|
| Shieldonファイアウォールは、ウェブサイトに寄せられるすべてのHTTPリクエストを監視します。
*/
if (isset($_SERVER['REQUEST_URI'])) {
// このディレクトリには書き込み権限が必要です。
$storage = __DIR__ . '/../storage/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);
}
}
次のコマンドを実行して、FirewallPanelController
という名前のコントローラを作成します。
例:
php bin/console make:controller FirewallPanelController
FirewallPanelController
コントローラクラスに以下の行を追加してください:
例:
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
CSRFが有効になっている場合は、次の行を追加してください:
例:
$csrf = $this->container->get('security.csrf.token_manager');
$token = $csrf->refreshToken('key');
完全な例は次のようになります:
例:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
class FirewallPanelController extends AbstractController
{
/**
* @Route("/firewall/panel/", name="firewall_panel")
*/
public function panel()
{
$panel = new \Shieldon\Firewall\Panel();
// `symfony/security-csrf`がインストールされている場合。
$csrf = $this->container->get('security.csrf.token_manager');
$token = $csrf->refreshToken('key')->getValue();
$panel->csrf(['_token' => $token]);
$panel->entry();
exit;
}
/**
* @Route("/firewall/panel/{class}/{method}", name="firewall_panel_page")
*/
public function page()
{
$this->panel();
}
}
以上です。
Firewallパネルには/firewall/panel
でアクセスできます。ページを表示するには、ブラウザでこのURLにアクセスしてください。
https://yourwebsite.com/firewall/panel
デフォルトのログインはshieldon_user
、パスワードはshieldon_pass
です。Firewallパネルにログインしたら、まずログインとパスワードを変更することをお勧めします。
Shieldonファイアウォールが「Daemon」設定セクションで有効になっている場合、ウェブサイトを監視し始めます。設定を正しく行ったことを確認してください。