Ochrana phpBB proti spam botom

Návody na phpBB

Moderátori: Moderátori, Redaktori

Ako sa vám páči temto článok?

Veľmi dobrý
4
11%
Veľmi dobrý
4
11%
Veľmi dobrý
4
11%
Dobrý
4
11%
Dobrý
4
11%
Dobrý
4
11%
Priemerný
3
8%
Priemerný
3
8%
Priemerný
3
8%
Nič moc
1
3%
Nič moc
1
3%
Nič moc
1
3%
 
Celkom hlasov : 36

Ochrana phpBB proti spam botom

Poslaťod matt21 » Pia Máj 11, 2007 3:02 pm

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" />
Z phpbb podporou končím, lebo ľudia si to nevedia vážíť... :!: :!: :!:
Obrázok užívateľa
matt21
Expert
Expert
 
Príspevky: 1046
Registrovaný: Pia Mar 02, 2007 11:11 am

Poslaťod matrix2002 » Str Máj 16, 2007 10:23 am

Já vím, že mám blby dotaz, ale mohl bys napsat přesně na kterých mistech v tech souborech ty příkazy dávaš? Jsem v tomhle lama :)
matrix2002
Návštevník
Návštevník
 
Príspevky: 2
Registrovaný: Str Máj 16, 2007 10:20 am

Poslaťod Retorik » Str Máj 16, 2007 4:24 pm

matrix2002 píše:Já vím, že mám blby dotaz, ale mohl bys napsat přesně na kterých mistech v tech souborech ty příkazy dávaš? Jsem v tomhle lama :)
Text som sice necital cely od zaciatku po koniec, ale aj pocas toho ked som to prechadzal ocami som si tam vsimol hrubo vytlacenu cestu/subory kde mas co vlozit. ;)
Nejaké otázky na mňa? Súkromná správa prosím.(Podporu cez SS nerobím)
Retorik
Profesionál
Profesionál
 
Príspevky: 329
Registrovaný: Uto Jan 30, 2007 8:13 pm
Bydlisko: Slovakia

Poslaťod matrix2002 » Štv Máj 17, 2007 4:33 pm

nj, tak zhruba to jo, ale do jakého souboru a kde v něm mám hodit ten poslední kod se zprávou Ak vidíte túto správu, tak nastala chyba...?
matrix2002
Návštevník
Návštevník
 
Príspevky: 2
Registrovaný: Str Máj 16, 2007 10:20 am

Poslaťod Retorik » Štv Máj 17, 2007 6:06 pm

Predpokladam, ze to bude toto... Teraz si otvorte súbor /includes/functions_post.php ;)
Nejaké otázky na mňa? Súkromná správa prosím.(Podporu cez SS nerobím)
Retorik
Profesionál
Profesionál
 
Príspevky: 329
Registrovaný: Uto Jan 30, 2007 8:13 pm
Bydlisko: Slovakia

Poslaťod matt21 » Štv Máj 17, 2007 6:51 pm

ano, zabudol som to tam napisat :)
Z phpbb podporou končím, lebo ľudia si to nevedia vážíť... :!: :!: :!:
Obrázok užívateľa
matt21
Expert
Expert
 
Príspevky: 1046
Registrovaný: Pia Mar 02, 2007 11:11 am

Poslaťod blaster700i » Sob Máj 26, 2007 7:16 pm

matt21 píše:ano, zabudol som to tam napisat :)

cawes mam otazku.
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".
Ako sucast vstupneho formulara??to mam vlozit do zdrojoveho kodu??ak hej tak kde presne??
blaster700i
Profesionál
Profesionál
 
Príspevky: 251
Registrovaný: Sob Máj 26, 2007 8:18 am

Poslaťod ja » Pia Aug 03, 2007 12:19 pm

OK, to hlasenie má byť v súbore /includes/functions_post.php, ale kde presne? A musí to hlásenie tam vôbec byť?

A ako je možné, že pri registrácii sa na mojom fóre musia opísať písmená z toho náhodného obrázku a mne sa tam aj tak objavujú zaregistrovaní užívatelia z USA, Mexika, atď., ktorí tam hodia jednu diskusiu so samymi odkazmy?
ja
Návštevník
Návštevník
 
Príspevky: 17
Registrovaný: Pia Aug 03, 2007 12:13 pm

Poslaťod ja » Str Aug 08, 2007 2:27 pm

Navyse som vyskúšal popridavať tieto kody okrem toho chyboveho hlasenia (lebo neviem kde ho mam dat) a stale mi tam pribúda mnozstvo spamu...
ja
Návštevník
Návštevník
 
Príspevky: 17
Registrovaný: Pia Aug 03, 2007 12:13 pm


Späť na Návody

Kto je on-line

Užívatelia prezerajúci fórum: Žiadny registrovaný užívateľ nie je prítomný a 0 hostia


vladstudio
TOPlist TOPlist
cron

Valid XHTML 1.0 Strict [Valid Atom 1.0]


* Štúrovo ubytovanie *