CodeIgniter

CodeIgniter는 가벼운 MVC 프레임워크입니다. 이전 버전과 큰 차이가 있는 CodeIgniter 3부터 설명하겠습니다.

이 가이드에서는 CodeIgniter 애플리케이션에 Shieldon 방화벽을 구현하는 몇 가지 팁을 공유하겠습니다.

CodeIgniter 프레임워크에서의 방화벽

설치

PHP Composer를 사용하세요:

composer require shieldon/shieldon

이로써 Shieldon에 필요한 종속성도 설치됩니다:

구현하기

  • CodeIgniter 3
  • CodeIgniter 4

CodeIgniter 3

CodeIgniter 3에는 MVC (Model-View-Controller) 아키텍처 패턴을 처리하는 CI_Controller라는 코어 컨트롤러가 있습니다.

core 폴더에 MY_Controller라는 부모 컨트롤러를 생성하고 초기 코드를 추가하는 것을 강력히 추천합니다.

1. MY_Controller

core 폴더에 MY_Controller.php라는 파일을 생성하세요.

class MY_Controller extends CI_Controller
{
    /**
     * 생성자.
     */
    public function __construct()
    {
        parent::__construct();
    }
}

2. 방화벽 인스턴스 초기화

생성자에 초기 코드를 넣어 MY_Controller를 확장하는 모든 컨트롤러에 Shieldon 방화벽이 초기화되고 $this->firewall() 메소드가 사용 가능하도록 하세요.

class MY_Controller extends CI_Controller
{
    /**
     * 생성자.
     */
    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';

3. 컨트롤 패널을 위한 컨트롤러 정의

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/

CodeIgniter 4

1. 필터 등록하기

app/Config/Filters.php 파일에 다음 코드를 $aliases 속성에 추가하세요:

'firewall' => \Shieldon\Firewall\Intergration\CodeIgniter4::class,

다음으로, before 배열 내에 문자열 'firewall'을 추가하세요:

public $globals = [
    'before' => [
        'firewall'
    ],
];

2. 방화벽 패널을 위한 컨트롤러 정의

<?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입니다. 방화벽 패널에 로그인한 후 첫 번째로 해야 할 일은 로그인과 비밀번호를 변경하는 것입니다.

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