Č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ů.

 
Komentáře (11)
Komentar
11 Středa, 02 Červen 2010 08:15
Kalby
Prominte, ale dal jsem Vám jasný odkaz jak se komentuje v HTML, s tim ze to neni to same jako v PHP, to by snad mel kazdy pochopit.

Pokud to nevite, zkuste kod style="visibility:hidden;height:1px;" proste smazat a mate to stejne.
nové pole při registraci
10 Středa, 02 Červen 2010 07:13
jituna
Trochu mne mrzí že začínáte odpovídat způsobem "já nšco vím, ale hádej co ??" Výše je textech uveden následující návod. Takže pokud nejsem úplné pako, tak se má zakomentovat uvedený řádek v souboru default.php ,takže dvě lomítka jsou klasické znaky komentáře. Jestliže to má být jinak, pak je uvedený návod zcela z uvedené kategorie hádanek,...!!!


Pokud chcete otestovat jesltli vas kod funguje.

Zakomentujte tuto cast:


style="visibility:hidden;height:1px"

Pote se Vam v registraci objevi nove pole. Pokud toto pole pri registraci vyplnite, mela by vyskocit chybova hlaska a novy uzivatel by se nemel ulozit.
komentar
9 Úterý, 01 Červen 2010 16:42
Kalby
V html se nekomentuje takto //

nybrz takto:

http://www.tvorba-webu.cz/xhtml/komentare.php
nové pole v registraci ?
8 Úterý, 01 Červen 2010 13:20
Jitka Zbirovská
Duplicitu ampresandu jsem si nakonec všimla,..omlouvám se, ale když jsem zakomentovala
//style="visibility:hidden;height:1px"
žádné nové pole pro "nachytání" robota při registraci se mi neobjevilo,..?
podminka
7 Úterý, 01 Červen 2010 12:48
Kalby
Prepiste ten kod takto, v clanku je bohuzel misto ampersandu amp amp

spravne je tedy podminka

if(isset($_POST['url'])&&$_POST['url']!=''){
chyba na ř 223
6 Úterý, 01 Červen 2010 11:59
Jituna
if(isset($_POST['url'])&&;&&;$_POST['url']!=''){

Dobrý den, provedla jsem dle návodu úpravy, ale když natáhnu prezentační stránku a zkusím zavolat registraci,tak mi to píše tuto chybu,..? Čili se nedostanu ani k vyplnění registračního formuláře abych to mohla vyzkoušet. Díky za pomoc
Ochrana
5 Úterý, 18 Květen 2010 21:57
Kalby
A mate spravne opsany kod?

Misto & amp;& amp; je nutne zapsat &&, bohuzel nevim proc ale nejde mi to zapsat pres geshibot :)

Tento kod chrani pouze pred nezadouci registraci, neresi zasilani nevyzadane posty.

Pokud chcete otestovat jesltli vas kod funguje.

Zakomentujte tuto cast:

style="visibility:hidden;height:1px"


Pote se Vam v registraci objevi nove pole. Pokud toto pole pri registraci vyplnite, mela by vyskocit chybova hlaska a novy uzivatel by se nemel ulozit. Pokud se ulozi zrejme mate chybu v kodu
nefunguje
4 Úterý, 18 Květen 2010 15:01
Karel
Ahoj,
dneska jsem to dal na dva weby, protože v poslední době mi spam nabíral na počtu. Ale bohužel nefunguje, spam chodí dál.
Nevíte co s tím?
Díky
dopisek
3 Úterý, 18 Květen 2010 09:53
Kalby
nn slozenou zavorku na prvni radku ponechte, jinak vam to prestane fungovat:


function register_save()
{
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' );

atd.atd.
Dopísek
2 Úterý, 18 Květen 2010 07:53
Spogin
Na 1. řádku je u toho register_save } to mám taky přepsat?
Drobná oprava
1 Neděle, 11 Duben 2010 16:43
Kozoroh
Ahoj, díky za kód určitě se bude hodit. Právě jsem to začal řešit.
V kódu je (amp amp), předpokládám, že tam má být jen 2x anglické a. Jinak to hází chybu. Asi se to tam dostalo při převodu entit.

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