Kernel-APIs

Kernel

Shieldon\Firewall\Kernel
  • ban
  • getCurrentUrl
  • managedBy
  • run
  • setClosure
  • exclude
  • setExcludedUrls
  • setLogger
  • setProperty
  • setProperties
  • setStrict
  • unban

ban($ip)

  • param string $ip - Einzelne IP-Adresse.
  • return void

Blockiert eine IP-Adresse.

Beispiel:

$kernel->ban('33.125.12.87');

getCurrentUrl()

  • return string

Gibt die aktuelle URL zurück. Diese Methode entspricht $_SERVER['REQUEST_URI'].

Beispiel:

echo $kernel->getCurrentUrl();

managedBy($type)

  • param string $type "" managed | config | demo
  • return void

Gibt Shieldon den Typ an, durch den Shieldon verwaltet wird. Diese Einstellung betrifft nur das Firewall-Panel.

Beispiel:

$kernel->managedBy('demo');

run()

  • return int

Führt den Überprüfungsprozess aus.

Antwortcode:

Konstante Wert Grund
RESPONSE_DENY 0 Dauerhaft blockiert.
RESPONSE_ALLOW 1 Zugelassen.
RESPONSE_TEMPORARILY_DENY 2 Vorübergehend blockiert und kann durch Lösen eines Captchas entsperrt werden.
RESPONSE_LIMIT 3 Gestoppt aufgrund der Erreichung des Online-Sitzungslimits.

Beispiel:

$result = $kernel->run();

setClosure($key, $closure)

  • param string $key - Der Identifikationsname der Closure-Funktion.
  • param Closure $closure - Die Closure-Funktion.
  • return void

Setzt eine Closure-Funktion.

Beispiel:

$kernel->setClosure('www_authenticate', function() use ($authHandler, $authenticateList) {
    $authHandler->set($authenticateList);
    $authHandler->check();
});

exclude($uriPath)

  • param string $uriPath - Der Pfadbestandteil einer URI.
  • return void

Setzt eine URL, die von der Absicherung ausgeschlossen werden soll.

Beispiel:

$kernel->exclude('/firewall/panel');

setExcludedUrls($urls)

  • param array $urls - Die Sammlung von URLs.
  • return void

Setzt die URLs, die von der Absicherung ausgeschlossen werden sollen.

Beispiel:

$list = [
    '/example/1',
    '/wp-login.php',
];

$kernel->setExcludedUrls($list);

setLogger($logger)

  • param ActionLogger $logger - Protokolliert Aktionen für Benutzer.
  • return void

Setzt einen Action-Log-Logger.

Beispiel:

$kernel->setLogger(
    new \Shieldon\Firewall\Log\ActionLogger(
        BOOTSTRAP_DIR . '/../tmp/shieldon'
    )
);

setProperty($key, $value)

  • param string $key - Der Schlüsselname für die Eigenschaft.
  • param mixed $value - Der Wert des Schlüssels.
  • return void

Beispiel:

$kernel->setProperty('time_unit_quota', [
    's' => 4,
    'm' => 20, 
    'h' => 60, 
    'd' => 240,
]);

Die Erklärung der Einstellungen finden Sie hier.

setProperties($settings)

  • param array $settings - Die Einstellungen.
  • return void

Beispiel:

$kernel->setProperties($settings);

setStrict($bool)

  • param bool $bool - True, um den Strict-Modus zu aktivieren, False, um ihn zu deaktivieren.
  • return void

Beispiel:

$kernel->setStrict(true);

unban($ip)

  • param string $ip - Eine IP-Adresse.
  • return void

Entsperrt eine IP-Adresse.

Beispiel:

$kernel->unban('33.33.33.33');

Captcha-Trait

Shieldon\Firewall\Kernel\CaptchaTrait
  • setCaptcha
  • captchaResponse
  • disableCaptcha

setCaptcha($instance)

  • param CaptchaInterface $instance - Die Captcha-Instanz.
  • return void

Setzt ein Captcha. Für detaillierte Verwendungen siehe Abschnitt Captcha.

$kernel->setCaptcha(
    new \Shieldon\Firewall\Captcha\Recaptcha([
        'key' => '6LfkOaUUAAAAAH-AlTz3hRQ25SK8kZKb2hDRSwz9',
        'secret' => '6LfkOaUUAAAAAJddZ6k-1j4hZC1rOqYZ9gLm0WQh',
        'version' => 'v2',
        'lang' => 'en',
    ])
);

captchaResponse()

  • return bool

Gibt das Ergebnis von Captchas zurück. true: Captcha erfolgreich gelöst, false sonst.

Beispiel:

$result = $this->captchaResponsse();

disableCaptcha()

  • return void

Deaktiviert alle Captcha-Module. Diese Methode dient zum Unit-Testing-Zweck.


Komponenten-Trait

Shieldon\Firewall\Kernel\ComponentTrait
  • setComponent
  • getComponent
  • disableComponents

setComponent($instance)

  • param ComponentProvider $instance - Die Komponenteninstanz.
  • return void

Setzt eine Komponente.

Beispiel:

$kernel->setComponent(
    new \Shieldon\Firewall\Component\UserAgent()
);

getComponent()

  • param string $name - Der Klassenname der Komponente.
  • return void | ComponentProvider

Ruft eine Komponenteninstanz aus dem Komponentencontainer ab.

Beispiel:

$useragent = $kernel->getComponent('UserAgent');

disableComponents()

  • return void

Deaktiviert alle Komponenten, auch wenn sie bereits eingerichtet wurden.

Beispiel:

$kernel->disableComponents();

Treiber-Trait

Shieldon\Firewall\Kernel\DriverTrait
  • setDriver
  • setChannel
  • disableDbBuilder

setDriver($driver)

  • param DriverProvider $driver - Abfrage von Daten aus dem gewählten Treiber.
  • return void

Beispiel:

$dbLocation = APPPATH . 'cache/shieldon.sqlite3';
$pdoInstance = new \PDO('sqlite:' . $dbLocation);

$kernel->setDriver(
    new \Shieldon\Firewall\Driver\SqliteDriver($pdoInstance)
);

setChannel($channel)

  • param string $channel - Gibt einen Kanal an.
  • return void

Beispiel:

$kernel->setChannel('web_project');

disableDbBuilder()

  • return void

Deaktiviert den automatischen Aufbau der Datenbank.

Beispiel:

$kernel->disableDbBuilder();

Filter-Trait

Shieldon\Firewall\Kernel\FilterTrait
  • setFilters
  • setFilter
  • disableFilters

setFilters($settings)

  • param array $settings - Filtereinstellungen.
  • return void
$kernel->setFilters([
    'session' => true,
    'cookie' => true,
    'referer' => true,
    'frequency' => true,
]);

setFilter($filterName, $value)

  • param string $filterName - Der Name des Filters.
  • param bool $value - True, um den Filter zu aktivieren, sonst false.
  • return void

Beispiel:

$kernel->setFilter('session', false);
$kernel->setFilter('cookie', false);
$kernel->setFilter('referer', true);
$kernel->setFilter('frequency', false); 

Standardmäßige Einstellungen:

Schlüssel Typ Wert Beschreibung
session bool true Überprüft die von Shieldon erstellte Sitzung.
cookie bool false Überprüft Cookies, die von JavaScript generiert wurden.
referer bool true Überprüft HTTP_REFERER.
frequency bool true Überprüft die Einstellung time_unit_quota.

Der Cookie-Filter ist standardmäßig auf false eingestellt, da Sie den JavaScript-Snippet auf Ihren Webseiten ausgeben müssen. Der durch getJavascript() generierte Snippet erstellt ein Cookie über JavaScript.

Lesen Sie getJavascript() für die Verwendung.

disableFilters()

  • return void

Deaktiviert alle Filter, auch wenn sie bereits eingerichtet wurden.

$kernel->disableFilters();

IP-Trait

Shieldon\Firewall\IpTrait
  • setIp
  • getIp
  • setRdns
  • getRdns

setIp($ip)

  • param string $ip - Eine IP-Adresse.
  • return void

Setzt eine IP-Adresse.

Beispiel:

// Hier ist ein Beispiel, um die echte Besucher-IP von CloudFlare zu erfassen.
$realIp = $_SERVER['HTTP_CF_CONNECTING_IP'];

// Wenn Sie einen CDN-Service auf Ihrer Website verwenden,
// stellen Sie sicher, dass Sie die echte Besucher-IP erfassen, sonst werden Benutzer blockiert.
$kernel->setIp($realIp);

getIp()

  • return string

Gibt die aktuell festgelegte IP zurück.

Beispiel:

$ip = $kernel->getIp();

setRdns($rdns)

  • param string $rdns - Reverse DNS-Eintrag für diese IP-Adresse.
  • return void

Setzt einen Reverse-DNS-Eintrag für die Überprüfung.

Beispiel:

$kernel->setRdns('localhost');

getRdns()

  • return string

Gibt den aufgelösten Hostnamen der IP zurück.

$rdns = $kernel->getRdns();

Messenger-Trait

Shieldon\Firewall\Kernel\MessengerTrait
  • setMessenger

setMessenger($instance)

  • param MessengerInterface $instance - Die Messenger-Instanz.
  • return void

Beispiel:

$apiKey = '981441296:AAGCcgv_NETMdWQCBTaMOk_yoMfax5EV7YQ';
$channel = '@your_channel';

$telegramMessenger = new \Messenger\Telegram($apiKey, $channel);

$kernel->setMessenger($telegramMessenger);

Template-Trait

Shieldon\Firewall\Kernel\TemplateTrait
  • setDialog
  • respond
  • setTemplateDirectory
  • getJavascript

setDialog($settings)

  • param array $settings - Die Einstellungen für das Dialog-Benutzeroberfläche.
  • return void

Passen Sie die Dialog-Benutzeroberfläche an.

Beispiel:

$settings = [
    'lang'             => 'en',
    'background_image' => '',
    'bg_color'         => '#ffffff',
    'header_bg_color'  => '#212531',
    'header_color'     => '#ffffff',
    'shadow_opacity'   => '0.2',
];

$kernel->setDialog($settings);

respond()

  • return ResponseInterface

Antworten Sie mit dem Ergebnis.

Beispiel:

$response = $kernel->respond();

setTemplateDirectory($directory)

  • param array $directory - Das Verzeichnis, in dem die Vorlagendateien abgelegt sind.
  • return void

Legen Sie das Verzeichnis für das Frontend-Template fest. Sie können diese Dateien in ein Verzeichnis kopieren und sie für die Anpassung des Aussehens der Dialoge bearbeiten.

Beispiel:

$kernel->setTemplateDirectory(YOUR_DIRECTORY_PATH);

getJavascript()

  • return string

Geben Sie ein JavaScript-Snippet in Ihren Webseiten aus.

Dieses Snippet erstellt ein Cookie im Browser des Clients, dann überprüfen wir das Cookie, um zu identifizieren, ob der Client ein Bot ist oder nicht.

// Geben Sie diese Variable in Ihrem Seitenmodell aus.
$jsCode = $kernel->getJavascript();

Sitzung

Shieldon\Firewall\Kernel\SessionTrait
  • limitSession
  • getSessionCount

limitSession($count, $period, $unique)

  • param int $count 1000 Die Anzahl der Benutzer online. Wenn erreicht, werden Benutzer in der Warteschlange stehen.
  • param int $period 300 Der Zeitraum, in dem Benutzer browsen können. (Einheit: Sekunde)
  • param bool $unique false Erlaubt nur eine Sitzung pro IP-Adresse.
  • return void

Begrenzt die Online-Sitzungen.

Beispiel:

$kernel->limitSession(100, 300);

getSessionCount()

  • return int

Gibt die Anzahl der Online-Besucher zurück. Wenn limitSession aktiviert ist.

Beispiel:

$count = $kernel->getSessionCount();