Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions Controllers/HoneypotController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php
namespace Poznavacky\Controllers;

use Poznavacky\Models\Logger;

/**
* Kontroler starající se o vypsání úvodní stránky webu
* @author Jan Štěch
*/
class HoneypotController extends SynchronousController
{

/**
* Metoda nastavující hlavičku stránky a pohled k zobrazení
* @param array $parameters Parametry pro kontroler (nevyužíváno)
* @see SynchronousController::process()
*/
public function process(array $parameters): void
{
file_put_contents('.htaccess', 'Deny from '.$_SERVER['REMOTE_ADDR'].PHP_EOL, FILE_APPEND | LOCK_EX); //Toto fakt není ideální, přímé upravování .htaccess je asi ta největší zrůdnost, co jsem kdy naprogramoval, ale prozartím to bude fungovat. Ideálně by se ten blacklist měl sestavovat v nějakém odděleném textovém souboru a .htaccess by jej měl načítat.
(new Logger())->info('Nepřihlášený uživatel přistupující na server z IP adresy {ip} byl přidán na blacklist IP adres kvůli pokusu přisoupit k (neexistujícímu) souboru .env.',
array('ip' => $_SERVER['REMOTE_ADDR']));
exit('You have been permanently blocked for URL-probing.'); //Tohle také není úplně elegantní. Ale hej, tohle je jenom pro roboty a hackery...
}
}

4 changes: 4 additions & 0 deletions routes.ini
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ report-action=ReportAction
account-settings=AccountSettings
account-update=AccountUpdate

.env=Honeypot

[Routes]
; Seznam všech podporovaných URL cest
; Klíči jsou URL cesty, ve kterých jsou proměnné nahrazeny <x> značkami
Expand Down Expand Up @@ -123,6 +125,8 @@ account-update=AccountUpdate
/menu/account-settings=AccountSettings
/menu/account-update=AccountUpdate

/.env=Honeypot

[Selections]
; Seznam indexů pole $_SESSION['selection'], jejichž hodnoty se mají při použití určité cesty aktualizovat
; Klíči jsou URL cesty, ve kterých jsou proměnné nahrazeny <x> značkami
Expand Down