[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 将会开始监看您的网站,请肯定您已经把设定值都设定正确。

相关文章
相关标签/搜索