Yii 2

이 가이드에서는 Yii 애플리케이션에 Shieldon 방화벽을 구현하는 방법에 대한 몇 가지 아이디어를 제공합니다.

Yii 프레임워크의 방화벽

설치

PHP Composer를 사용하세요:

composer require shieldon/shieldon

이것은 Shieldon에 필요한 종속성도 설치합니다:

구현

Yii 2

1. 커널 초기화 이전

public/index.php 파일에서 다음 라인 앞에 다음 코드를 추가하세요:

예시:

/*
|--------------------------------------------------------------------------
| Shieldon 방화벽 실행
|--------------------------------------------------------------------------
|
| Shieldon 방화벽은 웹사이트로 들어오는 모든 HTTP 요청을 감시합니다.
| Yii를 초기화하기 전에 Shieldon 방화벽을 실행하면 Yii의 내장 기능과의 충돌을 피할 수 있습니다.
*/

if (isset($_SERVER['REQUEST_URI'])) {
    $storage = __DIR__ . '/../runtime/shieldon';

    $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);
    }
}

2. 방화벽 패널을 위한 라우트 정의

FirewallPanelController라는 컨트롤러를 생성하세요.

예시:

<?php

namespace app\controllers;

use yii\web\Controller;

class FirewallController extends Controller
{
    public function beforeAction($action)
    {
        $this->enableCsrfValidation = false;

        return parent::beforeAction($action);
    }

    /**
     * 방화벽 패널의 진입점입니다.
     *
     * @return string
     */
    public function actionPanel()
    {
        $panel = new \Shieldon\Firewall\Panel();
        $panel->entry();
    }
}

config/web.php 파일에서 enablePrettyUrl이 true로 설정되어 있는지 확인하세요.

예시:

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules' => [
        'firewall/panel/' => 'firewall/panel',
        'firewall/panel/<slug:.*>' => 'firewall/panel',
    ],
],

여기까지입니다.

브라우저에서 /firewall-panel을 방문하여 방화벽 패널에 접속할 수 있습니다.

컨트롤 패널

https://yourwebsite.com/firewall-panel

기본 로그인은 shieldon_user이고, 비밀번호는 shieldon_pass입니다. 방화벽 패널에 로그인한 후에는 로그인과 비밀번호를 변경하는 것이 좋습니다.

Shieldon 방화벽이 "Daemon" 설정 섹션에서 활성화되어 있다면, 웹사이트를 모니터링하기 시작합니다. 설정을 올바르게 구성했는지 확인하세요.