Články

Odkazy

Spřátelené weby

JoomlaDev.eu - Vše o vývoji CMS Joomla

Redakční systém WordPress - Nejlepší redakční systém zdarma - WordPress

Anketa

O jakém RS by jste chtěli více článků
 
Navigace: Úvodní strana Joomla Články Ochrana registrace uživatelů před SPAMem Joomla

Ochrana registrace uživatelů před SPAMem Joomla

PDF Tisk Email
Středa, 28 Říjen 2009 12:42
joomla ochrana formulářeNedávno na tomto serveru znepokojivě vzrostla registrace uživatelů s podivnými jmény, ruskými emaily apod. Tyto registrace provádí tzv. BOTi, kteří automaticky vaší stránku projedou a vyplní všechny možné formuláře. Bohužel Joomla při registraci nového uživatele nepoužívá Captchu ani jiné antispamové ochrany tohoto formuláře. Jediná možnost jak tomuto zabránit je aktivovat v globálním nastavení "Povolení dokončení registrace přes email". To jsem však nechtěl aktivovat kvůli běžným uživatelům a tak jsem přišel s vlastním osvědčeným řešením.

Řešení spočívá v tom, že do formuláře vložíme další input s nějakým, pro bota, lákavým názvem jako např. "url, website, web, name" apod. u kterého máme jistotu že ho vždy vyplní. Tento input ale skryjeme do divu, kterému nastavíme atribut visibility:hidden. Tím tento input skryjeme. Normální uživatel ho neuvidí takže ho nemůže vyplnit. Bot však prochází zdrojový kód takže ho uvidí, vyplní a tím se chytí do pasti :)

Úprava zdrojových souborů

Nejprve si tedy upravíme šablonu formuláře. Jedná se o komponentu com_user. Najdeme si tedy soubor components/com_user/views/register/tmpl/default.php a kamkoliv do mezi tag form vepíšeme tento kód:

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


Jáosobně jsem ho vložil před potvrzovací tlačítko button (řádek 80)

 

Nyní si najdeme soubor components/com_user/controller.php otevřeme ho a najdeme si funkci register_save() a hned první dva řádky upravíme takto:

  1. global $mainframe;
  2. if(isset($_POST['url'])&amp;&amp;$_POST['url']!=''){
  3. JError::raiseError( 403, JText::_( 'Vyplnil jsi neviditelné pole, jsi BOT' ));
  4. return;
  5. }
  6.  
  7. // Check for request forgeries
  8. JRequest::checkToken() or jexit( 'Invalid Token' );
 

Tím zajistíme, že pokud někdo vyplní neviditelné pole, vyskočí mu stránka 403 s titulkem "Vyplnil jsi neviditelné pole, jsi BOT" tím se registrace zruší a my můžeme v klidu spát a nemusíme každý den mazat desítky fiktivních uživatelů.

 

Přidej Váš komentář

BoldItalicUnderlineStrikethroughSubscriptSuperscriptEmailImageHyperlinkOrdered listUnordered listQuoteCodeHyperlink to the Article by its id
Vaše jméno:
Předmět:
Komentář:

Ochrana osobních údajů, Mapa stránek,design a kód Klasdesign, Redakční systémy, rs@redakcni-systemy.com 2009
Wifi router a antény , Moje IP, Studuj FEL, Barevné kontaktní čočky