Shieldon\Firewall\Kernel
$ip
)string
$ip -
단일 IP 주소.void
IP 주소를 차단합니다.
예시:
$kernel->ban('33.125.12.87');
string
현재 URL을 반환합니다. 이 메소드는 $_SERVER['REQUEST_URI']
와 동일합니다.
예시:
echo $kernel->getCurrentUrl();
$type
)string
$type ""
managed | config | demovoid
Shieldon이 어떤 유형으로 관리되는지 알려줍니다. 이 설정은 방화벽 패널에만 영향을 미칩니다.
예시:
$kernel->managedBy('demo');
int
확인 프로세스를 실행합니다.
응답 코드:
상수 | 값 | 이유 |
---|---|---|
RESPONSE_DENY |
0 | 영구 차단 |
RESPONSE_ALLOW |
1 | 통과 |
RESPONSE_TEMPORARILY_DENY |
2 | 일시적 차단 및 Captcha를 해결하여 차단 해제 가능 |
RESPONSE_LIMIT |
3 | 온라인 세션 제한 도달로 인한 중지 |
예시:
$result = $kernel->run();
$key
, $closure
)string
$key -
클로저의 식별 이름.Closure
$closure -
클로저 함수.void
클로저 함수를 설정합니다.
예시:
$kernel->setClosure('www_authenticate', function() use ($authHandler, $authenticateList) {
$authHandler->set($authenticateList);
$authHandler->check();
});
$uriPath
)string
$uriPath -
URI의 경로 구성 요소.void
보호에서 제외하려는 URL을 설정합니다.
예시:
$kernel->exclude('/firewall/panel');
$urls
)array
$urls -
URL의 컬렉션.void
보호에서 제외하려는 URL을 설정합니다.
예시:
$list = [
'/example/1',
'/wp-login.php',
];
$kernel->setExcludedUrls($list);
$logger
)ActionLogger
$logger -
사용자의 작업 로그 기록.void
작업 로그 기록기를 설정합니다.
예시:
$kernel->setLogger(
new \Shieldon\Firewall\Log\ActionLogger(
BOOTSTRAP_DIR . '/../tmp/shieldon'
)
);
$key
, $value
)string
$key -
속성의 키 이름.mixed
$value -
키의 값.void
예시:
$kernel->setProperty('time_unit_quota', [
's' => 4,
'm' => 20,
'h' => 60,
'd' => 240,
]);
설정에 대한 설명은 여기에서 찾을 수 있습니다.
$settings
)array
$settings -
설정.void
예시:
$kernel->setProperties($settings);
$bool
)bool
$bool -
엄격 모드를 활성화하려면 True, 비활성화하려면 False.void
예시:
$kernel->setStrict(true);
$ip
)string
$ip -
IP 주소.void
IP 주소의 차단을 해제합니다.
예시:
$kernel->unban('33.33.33.33');
Shieldon\Firewall\Kernel\CaptchaTrait
$instance
)CaptchaInterface
$instance -
Captcha 인스턴스.void
Captcha를 설정합니다. 자세한 사용법은 Captcha 섹션을 참조하세요.
$kernel->setCaptcha(
new \Shieldon\Firewall\Captcha\Recaptcha([
'key' => '6LfkOaUUAAAAAH-AlTz3hRQ25SK8kZKb2hDRSwz9',
'secret' => '6LfkOaUUAAAAAJddZ6k-1j4hZC1rOqYZ9gLm0WQh',
'version' => 'v2',
'lang' => 'en',
])
);
bool
Captcha의 결과를 반환합니다.
true
: Captcha가 성공적으로 해결되었습니다. false
는 그렇지 않음을 의미합니다.
예시:
$result = $this->captchaResponsse();
void
Captcha 모듈을 모두 비활성화합니다. 이 메소드는 단위 테스트 용도로 사용됩니다.
Shieldon\Firewall\Kernel\ComponentTrait
$instance
)ComponentProvider
$instance -
Component 인스턴스.void
Component를 설정합니다.
예시:
$kernel->setComponent(
new \Shieldon\Firewall\Component\UserAgent()
);
string
$name -
Component의 클래스 이름.void
| ComponentProvider
Component 컨테이너에서 Component 인스턴스를 가져옵니다.
예시:
$useragent = $kernel->getComponent('UserAgent');
void
모든 Component를 비활성화합니다. 이미 설정되었더라도 적용됩니다.
예시:
$kernel->disableComponents();
Shieldon\Firewall\Kernel\DriverTrait
$driver
)DriverProvider
$driver -
선택한 드라이버에서 데이터를 쿼리합니다.void
예시:
$dbLocation = APPPATH . 'cache/shieldon.sqlite3';
$pdoInstance = new \PDO('sqlite:' . $dbLocation);
$kernel->setDriver(
new \Shieldon\Firewall\Driver\SqliteDriver($pdoInstance)
);
$channel
)string
$channel -
채널을 지정합니다.void
예시:
$kernel->setChannel('web_project');
void
데이터베이스 자동 구축을 비활성화합니다.
예시:
$kernel->disableDbBuilder();
Shieldon\Firewall\Kernel\FilterTrait
$settings
)array
$settings -
필터 설정.void
$kernel->setFilters([
'session' => true,
'cookie' => true,
'referer' => true,
'frequency' => true,
]);
$filterName
, $value
)string
$filterName -
필터의 이름.bool
$value -
필터를 활성화하려면 true, 그렇지 않으면 false.void
예시:
$kernel->setFilter('session', false);
$kernel->setFilter('cookie', false);
$kernel->setFilter('referer', true);
$kernel->setFilter('frequency', false);
기본 설정:
키 | 유형 | 값 | 설명 |
---|---|---|---|
session | bool | true | Shieldon 세션 드라이버로 생성된 세션 확인 |
cookie | bool | false | JavaScript에 의해 생성된 쿠키 확인 |
referer | bool | true | HTTP_REFERER 확인 |
frequency | bool | true | time_unit_quota 설정 확인 |
쿠키 필터는 기본적으로 false
로 설정되어 있습니다. JavaScript 스니펫을 웹 페이지에 출력해야 하기 때문입니다. getJavascript()
가 생성하는 스니펫은 JavaScript로 쿠키를 생성합니다.
사용법은 getJavascript()
를 참조하세요.
void
이미 설정된 필터든 아니든 모든 필터를 비활성화합니다.
$kernel->disableFilters();
Shieldon\Firewall\IpTrait
$ip
)string
$ip -
IP 주소.void
IP 주소를 설정합니다.
예시:
// 여기는 CloudFlare의 실제 방문자 IP를 캡처하는 예입니다.
$realIp = $_SERVER['HTTP_CF_CONNECTING_IP'];
// 웹 사이트에 CDN 서비스를 사용하는 경우,
// 사용자가 차단되지 않도록 실제 방문자 IP를 캡처해야 합니다.
$kernel->setIp($realIp);
string
현재 설정된 IP를 반환합니다.
예시:
$ip = $kernel->getIp();
$rdns
)string
$rdns -
해당 IP 주소의 역 DNS 레코드.void
확인을 위해 역 DNS 레코드를 설정합니다.
예시:
$kernel->setRdns('localhost');
string
IP가 해석된 호스트 이름을 반환합니다.
$rdns = $kernel->getRdns();
Shieldon\Firewall\Kernel\MessengerTrait
$instance
)MessengerInterface
$instance -
Messenger 인스턴스.void
예시:
$apiKey = '981441296:AAGCcgv_NETMdWQCBTaMOk_yoMfax5EV7YQ';
$channel = '@your_channel';
$telegramMessenger = new \Messenger\Telegram($apiKey, $channel);
$kernel->setMessenger($telegramMessenger);
Shieldon\Firewall\Kernel\TemplateTrait
$settings
)array
$settings -
대화 상자 UI 설정.void
대화 상자 UI를 사용자 정의합니다.
예시:
$settings = [
'lang' => 'en',
'background_image' => '',
'bg_color' => '#ffffff',
'header_bg_color' => '#212531',
'header_color' => '#ffffff',
'shadow_opacity' => '0.2',
];
$kernel->setDialog($settings);
ResponseInterface
결과로 응답합니다.
예시:
$response = $kernel->respond();
$directory
)array
$directory -
템플릿 파일이 있는 디렉토리.void
프론트엔드 템플릿 디렉토리를 설정합니다. 이 파일을 복사하고 템플릿의 외관을 사용자 정의하기 위해 수정할 수 있습니다.
예시:
$kernel->setTemplateDirectory(YOUR_DIRECTORY_PATH);
string
웹 페이지에서 JavaScript 스니펫을 출력합니다.
이 스니펫은 클라이언트의 브라우저에 쿠키를 생성하고, 쿠키를 확인하여 클라이언트가 로봇인지 여부를 확인합니다.
// 페이지 템플릿에서이 변수를 출력하세요.
$jsCode = $kernel->getJavascript();
Shieldon\Firewall\Kernel\SessionTrait
$count
, $period
, $unique
)int
$count 1000
온라인 사용자 수. 도달하면 사용자가 대기열에 있게 됩니다.int
$period 300
사용자가 탐색할 수 있는 시간. (단위: 초)bool
$unique false
IP 주소 당 하나의 세션만 허용합니다.void
온라인 세션을 제한합니다.
예시:
$kernel->limitSession(100, 300);
int
온라인 사용자 수를 반환합니다. limitSession이 활성화되어 있으면.
예시:
$count = $kernel->getSessionCount();