CodeIgniter는 가벼운 MVC 프레임워크입니다. 이전 버전과 큰 차이가 있는 CodeIgniter 3부터 설명하겠습니다.
이 가이드에서는 CodeIgniter 애플리케이션에 Shieldon 방화벽을 구현하는 몇 가지 팁을 공유하겠습니다.
PHP Composer를 사용하세요:
composer require shieldon/shieldon
이로써 Shieldon에 필요한 종속성도 설치됩니다:
CodeIgniter 3에는 MVC (Model-View-Controller) 아키텍처 패턴을 처리하는 CI_Controller
라는 코어 컨트롤러가 있습니다.
core
폴더에 MY_Controller
라는 부모 컨트롤러를 생성하고 초기 코드를 추가하는 것을 강력히 추천합니다.
core
폴더에 MY_Controller.php
라는 파일을 생성하세요.
class MY_Controller extends CI_Controller
{
/**
* 생성자.
*/
public function __construct()
{
parent::__construct();
}
}
생성자에 초기 코드를 넣어 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';
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/
app/Config/Filters.php
파일에 다음 코드를 $aliases
속성에 추가하세요:
'firewall' => \Shieldon\Firewall\Intergration\CodeIgniter4::class,
다음으로, before
배열 내에 문자열 'firewall'을 추가하세요:
public $globals = [
'before' => [
'firewall'
],
];
<?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 방화벽이 활성화되어 있다면, 웹사이트를 모니터링하기 시작할 것입니다. 설정을 올바르게 설정했는지 확인하세요.