CodeIgniter 是一個輕量級的 MVC 框架。我將首先討論 CodeIgniter 3,因為它與之前的版本有很大的不同。
在本指南中,我將分享一些在 CodeIgniter 應用程式中實現 Shieldon 防火牆的技巧。
使用 PHP Composer:
composer require shieldon/shieldon
這也會安裝 Shieldon 所需的相依套件:
CodeIgniter 3 有一個名為 CI_Controller
的核心控制器,用於處理其 MVC(模型-視圖-控制器)架構。
我強烈建議在 core
資料夾中創建一個名為 MY_Controller
的父控制器,並在其中添加初始程式碼。
讓我們在 core
資料夾中創建一個名為 MY_Controller.php
的檔案。
class MY_Controller extends CI_Controller
{
/**
* Constructor.
*/
public function __construct()
{
parent::__construct();
}
}
將初始程式碼放在建構函式中,這樣任何擴展 MY_Controller 的控制器都將初始化 Shieldon 防火牆並可使用 $this->firewall()
方法。
class MY_Controller extends CI_Controller
{
/**
* Constructor.
*/
public function __construct()
{
parent::__construct();
// Composer 自動載入程式
require_once APPPATH . '../vendor/autoload.php';
// 這個目錄必須具有寫入權限。
$storage = APPPATH . 'cache/shieldon_firewall';
$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);
}
}
/**
* Shieldon 防火牆保護。
*/
public function firewall()
{
$firewall = \Shieldon\Container::get('firewall');
$firewall->run();
}
}
提醒
為了達到最佳的安全性,系統和應用程式資料夾應該放在網站根目錄之上,以免通過瀏覽器直接訪問。
如果你的應用程式資料夾與 index.php 位於相同層級,請將 $storage
目錄移至安全位置。例如:
$storage = APPPATH . '../shieldon';
我們需要一個控制器來進入 Shieldon 防火牆控制面板,在這個範例中,我們定義一個名為 Firewall
的控制器。
class Firewall extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
/**
* 這是我們的防火牆面板的進入點。
*/
public function panel()
{
$panel = new \Shieldon\Firewall\Panel();
$panel->entry();
}
}
現在,你可以使用以下 URL 來訪問防火牆控制面板:
https://yoursite.com/firewall/panel/
在你的 app/Config/Filters.php
檔案中,將以下程式碼添加到 $aliases
屬性:
'firewall' => \Shieldon\Firewall\Intergration\CodeIgniter4::class,
接下來,在 before 陣列中的 $globals
屬性中加入字串 firewall:
public $globals = [
'before' => [
'firewall'
],
];
<?php
namespace App\Controllers;
class Firewall extends BaseController
{
public function panel()
{
$panel = new \Shieldon\Firewall\Panel();
$panel->csrf([csrf_token() => csrf_hash()]);
$panel->entry();
}
}
就這樣!
你可以在 /firewall/panel
訪問防火牆控制面板。要查看頁面,請在瀏覽器中前往該 URL。
https://yoursite.com/firewall/panel/
預設的登入帳號是 shieldon_user
,密碼是 shieldon_pass
。登入防火牆控制面板後,你應該首先更改登入帳號和密碼。
如果在「守護程式」設定部分中啟用了 Shieldon 防火牆,它將開始監控你的網站。請確保已正確設定這些設定。