[PHP] 在 Laravel 框架使用 WAF 防火牆

這個指南幫助您解決部署 Shieldon 防火牆在您的 Laravel 應用程式的疑問。這些指引並不是惟一能夠達成的方法,只是給您一些點子。 如下的步驟已經在 Laravel 5 及 6 中測試過。 Laravel 框架防火牆php

使用的套件: Shieldon Firewall
GitHub: https://github.com/terrylinoo...
文章英文版: Laravel Firewallhtml

安裝

使用 PHP Composer:laravel

composer require shieldon/shieldon

或者下載後引入 Shieldon 自動加載器。git

require 'Shieldon/autoload.php';

藉著使用 Shieldon 面板,部署 Shieldon 防火牆在您的網站應用程序上是相當簡單的。我強烈建議您選用這個方法。github

部署

對於 Laravel 愛好者,您能夠選擇 中介程序引導程序 來部署 Shieldon 防火牆在您的網站應用程序上。我我的偏好引導程序。bootstrap

中介程序

1. 定義一箇中介程序。

定義一箇中介程序名為 ShieldonFirewallbash

php artisan make:middleware ShieldonFirewall

ShieldonFirewall 中介程序的
類別中加入如下代碼:restful

$firewall = new \Shieldon\Firewall(storage_path('shieldon'));

// 轉傳 Laravel CSRF Token 到驗證碼錶單。
$firewall->getShieldon()->setCaptcha(new \Shieldon\Captcha\Csrf([
    'name' => '_token',
    'value' => csrf_token(),
]));

$firewall->restful();
$firewall->run();

2. 註冊一箇中介程序別名。

修改 app/Http/Kernel.php 而後加入這一行到$routeMiddleware 屬性中。app

'firewall' => \App\Http\Middleware\ShieldonFirewall::class,

3. 爲防火牆面板定義路由。

咱們須要一個控制器以進入 Shieldon 防火牆控制面板,因此呢...composer

Route::any('/your/secret/place/', function() {
    $firewall = \Shieldon\Container::get('firewall');
    $controlPanel = new \Shieldon\FirewallPanel($firewall);
    $controlPanel->csrf('_token', csrf_token());
    $controlPanel->entry();
})->middleware('firewall');

Shieldon 將會開始監看您的網站,若是在設定區塊中的 守護進程 有啓用的話。

4. 指派 firewall 中介程序到路由。

指派 firewall 中介程序 到任何您想要保護的路由。例如:

Route::get('/', function () {
    return view('welcome');
})->middleware('firewall');

引導程序

這就是我所說,我偏好的方法,由於比較少的步驟,且會避免可能發生和 Laravel 內建功能的衝突。

1. 在初始化 $app 以前。

在您的 bootstrap/app.php 中,在<?php,
以後加入如下代碼。

/*
|--------------------------------------------------------------------------
| 運行 Shieldon 防火牆
|--------------------------------------------------------------------------
|
| Shieldon 防火牆將開始監看全部進入您網站的 HTTP 請求。
| 在初始化 Laravel 以前運行 Shieldon 防火牆會避免和 Laravel 內建功能的衝突。
| 
*/

if (isset($_SERVER['REQUEST_URI'])) {

    // 注意這個目錄必須可寫入。
    $firewallstorage = __DIR__ . '/../storage/shieldon';

    $firewall = new \Shieldon\Firewall($firewallstorage);
    $firewall->restful();
    $firewall->run();
}

2. 爲防火牆面板定義路由。

Route::any('/your/secret/place/', function() {
    $firewall = \Shieldon\Container::get('firewall');
    $controlPanel = new \Shieldon\FirewallPanel($firewall);
    $controlPanel->csrf('_token', csrf_token());
    $controlPanel->entry();
});

若是您採用這個方式,Shieldon 防火牆將會在全域範圍運行,不過不用擔憂,您能夠針對想要 Shiedon 防火牆忽略的網址設定設定排除列表。

就是這樣囉。

如今,您能夠鏈接上防火牆面板,透過網址:

https://for.example.com/your/secret/place/

預設的登入賬號是 shieldon\_user 而密碼是 shieldon\_pass。在您登入防火牆面板以後,第一件該作的事情就是更改賬號及密碼。

若是在設定區塊中的 守護進程 有啓用的話,Shieldon 將會開始監看您的網站,請肯定您已經把設定值都設定正確。

相關文章
相關標籤/搜索