在本指南中,我將提供一些在 Yii 應用程式中實作 Shieldon 防火牆的想法。
使用 PHP Composer:
composer require shieldon/shieldon
這也會安裝 Shieldon 所需的相依套件:
在您的 public/index.php
檔案中,以下面這行之前:
require __DIR__ . '/../vendor/yiisoft/yii2/Yii.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);
}
}
建立一個名為 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
。登入防火牆控制台後,您應該立即更改登入帳號和密碼。
如果在「Daemon」設定部分啟用了 Shieldon 防火牆,它將開始監控您的網站。請確保已正確設定好這些設定。