Symfony 是一組可重複使用的 PHP 元件及 PHP 框架,用於構建網頁應用程式、API、微服務和網路服務。
此指南已在版本 4.3
中進行過成功測試,但也應該適用於舊版本。
Symfony 沒有中介軟體 (middleware) 的概念,因此您可以創建一個父控制器來實作 Shieldon Firewall,就像我們 CodeIgniter 指南 中的步驟一樣。
如果您不想在父控制器中初始化 Shieldon Firewall,您可以遵循下面提供的 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/panel
存取防火牆控制台,在瀏覽器中前往此網址以查看頁面。
https://yourwebsite.com/firewall/panel
預設登入帳號為 shieldon_user
,密碼為 shieldon_pass
。登入防火牆控制台後,您應該立即更改登入帳號和密碼。
如果在「Daemon」設定部分啟用了 Shieldon 防火牆,它將開始監控您的網站。請確保已正確設定好這些設定。