CakePHP

CakePHP 是一個被廣泛使用的開放源碼網頁框架,遵循 MVC 架構模式。它在 PHP 社群中備受推崇,並為建置網路應用程式提供一系列的功能和工具。

本指南已在 CakePHP 的 3.8 版本中成功進行測試。然而,它也應該適用於該框架的舊版本。

CakePHP 框架中的防火牆

安裝

使用 PHP Composer:

composer require shieldon/shieldon

這將同時安裝 Shieldon 需要的依賴套件:

實作

CakePHP 3

步驟 1 和步驟 2 應用在位於 /config/route.php 的同一個檔案。

步驟 1 和步驟 2 都涉及修改位於 /config/routes.php 的檔案。因此,你需要在該檔案中進行以下操作:

  • 打開 /config/routes.php 檔案。
  • 找到你定義應用程式路由的部分。
  • 根據提供的指示,實施步驟 1 和步驟 2 中描述的更改。
  • 儲存到 /config/routes.php 檔案的更改。

按照這些步驟,你將確保兩種修改都應用到適當的檔案。

1. 註冊一個中介軟體

一個供 CakePHP 使用的中介軟體在此為你準備好了。只需要在你的應用程式上註冊它即可。

範例:

/**
 * 將 Shieldon 防火牆應用到當前的路由範疇。
 */
$routes->registerMiddleware(
    'firewall',
    new \Shieldon\Firewall\Integration\CakePhp()
);

$routes->applyMiddleware('firewall');

2. 定義防火牆面板的路由

範例:

/**
 * 定義防火牆面板的路由。
 */
$routes->connect('/firewall/panel/', [
    'controller' => 'FirewallPanel',
    'action' => 'entry'
]);

3. 建立防火牆面板的控制器

建立一個名為 FirewallPanelController 的控制器,並將以下程式碼添加到其中。

範例:

$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
exit;

如果你啟用了 CSRF,加入這些行:

範例:

$panel->csrf(
    '_csrfToken',
    $this->request->getParam('_csrfToken')
);

完整的範例將如下所示:

範例:

<?php

namespace App\Controller;

class FirewallPanelController extends AppController
{
    /**
     * 這是我們的防火牆面板的入口。
     */
    public function entry()
    {
        // 進入防火牆面板。
        $panel = new \Shieldon\Firewall\Panel();

        $panel->csrf([
            '_csrfToken' => $this->request->getParam('_csrfToken')
        ]);

        $panel->entry();
        exit;
    }
}

就是這樣。

你可以在 /firewall/panel 訪問防火牆面板。要查看頁面,請在瀏覽器中打開此 URL。

控制面板

https://for.example.com/firewall/panel

預設的帳號名稱是 shieldon_user,密碼是 shieldon_pass。登錄防火牆面板後,你應該首先做的是更改帳號名稱和密碼。

如果在 Daemon 設定區域啟用了 Shieldon 防火牆,它將開始監控你的網站。請確保你已正確設定設定。