Návod určený pre: phpBB 2
Ochrana phpBB proti spam botom
Rozhodol som sa tento článok napísať preto, lebo mám jedno fórum a nejaké tie skúsenoti ako ochrániť fórum proti spam botom a chcem sa s týmito vedomostiami podeliť.
Fóra typu phpBB, sú veľmi využívané, ale samozrejme zneužívané k rôznym aktivitám, na ktoré sa administrátori neradi pozerajú.
Proti hackerským útokom sa môžete brániť viacerými spôsobmi, ale proti rôznym spammerským botom je tu už tažšie. Spam bot si môžete predstaviť ako nejaký automat, ktorí sliedi po webe a hľadá stránky, na ktorých by previedol nekalú činnosť. V prípade phpBB sa jedná o dva typy botov. Nedávno som si ich "zobral na paškál" pretože už ma nebavilo na to sa pozerať.
Prvých budeme volať registrační boti, ktorí nerobia nič iného, ako sa zaregistrujú pod nezmyselným nickom, a týmto ich aktivita končí. Spoznať sa dajú veľmi ľahko. Nicky takýchto užívateľských kont majú tvar nick + nejaké číslo, napr. charlie1984. Ďalej majú prednastavený jazyk na angličtinu alebo ruštinu. Hlavným ukazovateľom je www stránka v profile
bota, ktorá odkazuje na nejakú "super hyper xxx site".
Prečo to boti vôbec robia? Dôvod je veľmi jednoduchý. Fulltextové vyhľadávače, ako napr. Google, prechádzajú jednotlivé webové stránky a indexujú ich. Výsledná kvalita zaindexovanej stránky je nejaké počitadlo, ktoré ukazuje kvalitu podľa počtu zobrazených url stránok webu na internete. Webové fórum postavené na phpBB je samozrejme indexované
tiež, čo boti zneužívajú a registrujú nezmyslené kontá. Ochrana proti tohto typu spamu je jednoduchá, v nastavení fóra pridať vizuálne overenie registrácie, a tak bude musieť bot opísať znaky z náhodne vygenerovaného obrázku. Človek to zvládne, bot nie.
Druhý typ botov sa na nič nepýta. Proste rovno do náhodnej sekcie odošle príspevok plný url odkazov. Obranou môže byť povinná registrácia pre odoslanie príspevku. Ale kladiem si otázku: Prečo by mali podporné phpBB fóra, nastaviť aby anonym nemohol odoslať príspevok, a chce vedieť odpoveď na jednu otázku? Prečo by mal doplácať na chovanie automatických botov? Tak tento problém som riešil a riešenie bolo vcelku ľahké. Posúďte sami.
Všetko čo potrebujete, je byť chytrejší ako bot. Pokiaľ vo fóre užívateľ zadáva príspevok, ide cez odosielací formulár, kam ho zadá. Po odoslaní sa data z formulára odošlú ďalšiemu scriptu k overení ich platnosti a následovné sú publikované. Robot ide na to inak. Nejaký formulár? Žiaden nepotrebuje a odošle data priamo scriptu na spracovanie. Toto
je veľmi dobre využiť:
V súbore /templates/(názov_vášho_templatu)/posting_body.tpl pridajte ako súčasť vstupného formulára ďalší prvok, ktorý bude skrytý a dajte mu nejakú východziu hodnotu. V našom prípade "test4321".
[php]<input type="hidden" name="kontrola" value="test4321" />[/php]
Hodnotou tohto formulárového prvku je po odoslaní nutné data skriptom získať. V súbore posting.php nájdite:
[php]$message = ( !empty($HTTP_POST_VARS['message']) ) ?
$HTTP_POST_VARS['message'] : ”;[/php]
Pod tento riadok pridajte:
[php]$kontrola = ( !empty($HTTP_POST_VARS['kontrola']) ) ?
$HTTP_POST_VARS['kontrola'] : ”;[/php]
Týmto získate obsah vášho skrytého prvku z formulára. Kúsok za týmto kódom nájdete volanie funkcie prepare_post, do neho zadajte $kontrola ako ďalší vstupný parameter. Teraz si otvorte súbor /includes/functions_post.php, v ňom nájdite hlavičku spomínanej funkcie a pridajte tiež ako posledný vstup $kontrola.
Teraz už len stačí odstaviť bota. Teraz, keď prišiel príspevok do normálneho užívateľa, má $kontrola hodnotu z formulára. Pokiaľ ide o bota, on ju nemá a stačí akékoľvek chybové hlásenie pridať do $error_msg. Môže to vyzerať napríklad takto:
[php]if ($kontrola != "test4321") {
$error_msg .= 'Ak vidíte túto správu, tak nastala chyba a informuje prosím administrátora fóra.';
}[/php]
Príspevok nebude pridaný a formulár sa znovu zobrazí, aby užívateľ zadal opravu, ale s tým si už bot neporadí.
Aká je úspešnosť hore uvedeného spôsobu? Z môjho pozorovania zatiaľ 100%. Nezaznamenal som žiaden spamm od bota, ani chybu, keď by normálny užívateľ nemohol odoslať svoj príspevok. A o to predsa šlo, nie?
Dúfam že Vám tento spôsob pomôže, a budete spolu bojovať proti spam botom. S pozdravom matt21.
Kódy zobrazené v tagoch PHP nehľadajte a ani nezadávajte na začiatku s <?php .Príklad:
Tento kód v tagu PHP:
[php]<?php <input type="hidden" name="kontrola" value="test4321" /> [/php]
pridáte
<input type="hidden" name="kontrola" value="test4321" />





News
![Validate my Atom 1.0 feed [Valid Atom 1.0]](http://validator.w3.org/feed/images/valid-atom.png)