Slim - один из моих любимых фреймворков. Поскольку Slim - это микрофреймворк, реализация защитного экрана Shieldon также будет легкой. Без лишних слов, приступим.
Используйте PHP Composer:
composer require shieldon/shieldon
Это также установит зависимости, необходимые для Shieldon:
Вы можете создать промежуточный слой самостоятельно или просто использовать класс интеграции.
Пример:
class FirewallMiddleware
{
/**
* Пример класса, реализующего промежуточный слой
*
* @param ServerRequest $request Запрос PSR-7
* @param RequestHandler $handler Обработчик запросов PSR-15
*
* @return Response
*/
public function __invoke(Request $request, RequestHandler $handler): Response
{
$response = $handler->handle($request);
$firewall = new \Shieldon\Firewall\Firewall($request, $response);
// Каталог, в котором Shieldon Firewall будет размещать свои файлы.
$firewall->configure(__DIR__ . '/../cache/shieldon_firewall');
$response = $firewall->run();
if ($response->getStatusCode() !== 200) {
$httpResolver = new \Shieldon\Firewall\HttpResolver();
$httpResolver($response);
}
return $response;
}
}
Например, если вы используете фреймворк Slim 4, код должен выглядеть так.
Пример:
$app->add(new FirewallMiddleware());
Или, если вы предпочитаете использовать класс интеграции, вот код.
Пример:
$app->add(new \Shieldon\Firewall\Integration\Slim4);
Например, если вы используете фреймворк Slim 4, код должен выглядеть так. Затем вы сможете получить доступ к URL https://вашсайт.com/firewall/panel/
для входа в панель управления.
Пример:
$app->any('/firewall/panel[/{params:.*}]', function (Request $request, Response $response, $args) {
$firewall = new \Shieldon\Firewall\Firewall($request);
// Каталог, в котором Shieldon Firewall будет размещать свои файлы.
// Должно совпадать с firewallMiddleware.
$firewall->configure(__DIR__ . '/../cache/shieldon_firewall');
// Базовый URL для панели управления.
$firewall->controlPanel('/firewall/panel/');
$panel = new \Shieldon\Firewall\Panel();
// Начало - Настройка полей CSRF, если вы включили Slim-CSRF
$csrf = new \Slim\Csrf\Guard();
$nameKey = $csrf->getTokenNameKey();
$valueKey = $csrf->getTokenValueKey();
$csrfName = $request->getAttribute('csrf_name');
$csrfVale = $request->getAttribute('csrf_value');
$panel->csrf(
[$nameKey => $csrfName],
[$valueKey => $csrfVale]
);
// Конец - Slim-CSRF
$panel->entry();
});
Примечание:
POST
и GET
должны быть применены к вашему веб-сайту.POST
необходим для решения CAPTCHA пользователями, которые были временно заблокированы.Вот и все.
У Shieldon уже есть готовый класс интеграции для этого промежуточного слоя, просто используйте его следующим образом.
Пример:
$app->add(new \Shieldon\Firewall\Integration\Slim3);
Например, если вы используете каркас Slim3, код в файле middleware.php
будет выглядеть так:
Пример:
<?php
use Slim\App;
return function (App $app) {
$app->add(new \Shieldon\Firewall\Integration\Slim3);
$app->add(new \Slim\Csrf\Guard);
};
Например, если вы используете фреймворк Slim 4, код должен выглядеть так. Затем вы сможете получить доступ к URL https://вашсайт.com/firewall/panel/
для входа в панель управления.
Пример:
$app->map(['GET', 'POST'], '/firewall/panel[/{params:.*}]', function (Request $request, Response $response, array $args) {
$firewall = new \Shieldon\Firewall\Firewall($request);
// Каталог, в котором Shieldon Firewall будет размещать свои файлы.
// Должно совпадать с firewallMiddleware.
$firewall->configure(__DIR__ . '/../cache/shieldon_firewall');
// Базовый URL для панели управления.
$firewall->controlPanel('/firewall/panel/');
$panel = new \Shieldon\Firewall\Panel();
// Начало - Настройка полей CSRF, если вы включили Slim-CSRF
$csrf = new \Slim\Csrf\Guard();
$nameKey = $csrf->getTokenNameKey();
$valueKey = $csrf->getTokenValueKey();
$csrfName = $request->getAttribute('csrf_name');
$csrfVale = $request->getAttribute('csrf_value');
$panel->csrf(
[$nameKey => $csrfName],
[$valueKey => $csrfVale]
);
// Конец - Slim-CSRF
$panel->entry();
});
Вот и все.
Вы можете получить доступ к Панели управления Firewall по /firewall/panel/
, чтобы просмотреть страницу, перейдите по этому URL в своем браузере.
https://вашсайт.com/firewall/panel/
Логин по умолчанию: shieldon_user
, пароль: shieldon_pass
. После входа в Панель управления Firewall, первое, что вам следует сделать - изменить логин и пароль.
Если защитный экран Shieldon включен в разделе настройки Daemon
, он начнет отслеживать ваш сайт. Убедитесь, что вы правильно настроили настройки.