Máte webové stránky nebo eshop v redakčním systému Joomla! a každý den Vás otravují nesmyslné registrace uživatelů, kteří evidentně nejsou lidé, ale BOTi? V tomto článku se dozvíte, jak upravit kód vašeho webu tak, aby se tyto registrace automaticky zakazovaly.

webhosting WEDOS

Jak BOTi vyplňují registrační formuláře v Joomla!

Joomla! sama o sobě nepoužívá ochranu pomocí CAPTCHA, ani jinou ochranu proti spamu, a tak láká BOTy, aby vás tímto způsobem obtěžovali.

Problém by sice šel vyřešit i tak, že byste si v nastavení registrace aktivovali "Povolení dokončení registrace přes email", ale tím byste zase obtěžovali normální slušné uživatele a klesala by konverze.

Jak vyřešit problém se spamováním registračního formuláře Joomla?

Řešení je poměrně jednoduché a spočívá v úpravě dvou souborů Joomla!. BOTy odhalíme tak, že do registračního formuláře přidáme pole s nějakým lákavým názvem, jako je např. web, url, email atd., u kterého máme jistotu, že jej vždy vyplní. Toto pole ale skryjeme do divu, který má nastavený atribut visibility:hidden - tak jej skryjeme před očima běžného uživatele. Bot, který prochází zdrojový kód jej ale uvidí, vyplní, a tím ho dostanete do pasti. Když totiž vyplní neviditelné pole, vyskočí mu stránka 403 s titulkem "Vyplnil jsi neviditelné pole, jsi BOT" a registrace se zruší.

Návod na úpravu zdrojového kódu webu v Joomla!

1. Najděte soubor components/com_user/views/register/tmpl/default.php.

2. Kamkoliv mezi tagy označující formulář - form (např. na řádek 80), vložte tento kód:

<div style="visibility:hidden;height:1px">
<input type="text" name="url" value="" id="url" size="40" />
</div>

Uložte změny a upraveným souborem přepište aktuální soubor default.php.

3. Jako druhý si najděte soubor components/com_user/controller.php.

4. Otevřete jej v editoru html a najděte funkci register_save().

5. Vyberte text global $mainframe; a nahraďte jej tímto kódem:

global $mainframe;

if(isset($_POST['url'])&&$_POST['url']!=''){
JError::raiseError( 403, JText::_( 'Vyplnil jsi neviditelné pole, jsi BOT' ));
return;
}

// Check for request forgeries
JRequest::checkToken() or jexit( 'Invalid Token' );

6. Opět uložte změny a upraveným souborem přepište aktuální soubor controller.php.

Google

Chcete se na něco zeptat?
1000 znaků zbývá