Yii 2

在本指南中,我將提供一些在 Yii 應用程式中實作 Shieldon 防火牆的想法。

Yii 框架中的防火牆

安裝

使用 PHP Composer:

composer require shieldon/shieldon

這也會安裝 Shieldon 所需的相依套件:

實作

Yii 2

1. 在初始化 Kernel 之前

在您的 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);
    }
}

2. 定義 Firewall 控制台的路由

建立一個名為 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 防火牆,它將開始監控您的網站。請確保已正確設定好這些設定。