Asi každý při tvorbě svých stránek dojde k okamžiku, kdy se rozhodne na ně umístit návštěvní knihu, aby mu návštěvníci mohli svými vzkazy pozvednout sebevědomí, pomoci něco zkritizovat, mluvit úplně z cesty, prostě vyvolat dojem, že jeho stránky někdo čte. A už do ní přispívá sám nebo jeho okolí pod pohružkou fyzického násilí, či čistě náhodní návštěvnící, čas od času se v ní chtě nechtě objeví nějaký ten Spam (aka nevyžádaná reklama, svinstvo). Horší je, když se adresa návštěvní knihy nebo komentářů k článku, prostě jakákoliv diskuze, dostane do trvalého hledáčku spam robota a ten jí začne bombardovat desítkami spamu. Chudák spammer si zřejmě neuvědomuje, že ne každý ocení nabídku viagry, cialisu, xanaxu, pheterminu (půlku z těch slov jsem v životě neslyšel a dozvěděl sem se je poprvé až ze spamu). Když už byly zaměřeny i moje stránky a ruční mazání spamu se stávalo neúnosné, rozhodl jsem se se spamem bojovat všemi prostředky.
Nejprve je třeba si uvědomit, jak takový spammer funguje. Bohužel jsem dosud na žádné sympozium spammerů pozván nebyl, a tak nezbývá než věřit dohadům a doměnkám. Dnešní spammer už těžko dnem i nocí datluje do klávesnice a od počítače vstává jen pro kafe. Spammer vyhledává aktivní odkazy na různé diskuze a ty dosazuje do databáze. Posléze spamovací robot prochází diskuze tj. vyplňuje jednotlivá pole formuláře "poslepu" předem daným textem. A díky tomu je šance se mu bránit.
Opište daný text aneb CAPTCHA veryfying
První lest na spammery, kterou jsem vyzkoušel, byla tzv. CAPTCHA. Určitě už jste se někde setkali s pokynem "opište prosím text na obrázku".
Jde o náhodně vygenerovaná písmena, či číselnou řadu, jejichž hodnota se následně kontroluje s vyplněným textem. Celý příklad si můžete
stáhnout zde. V souboru visual-captcha.php se vytvoří obrázek (jehož pozadí můžeme uložit v images/captcha.jpg)
v souboru php-captcha.inc.php se do něj nageneruje kód, který se zašifruje md5, a pro nás je nejdůležitější soubor kontrola.php, který si
můžeme libovolně upravit a provádět s ním kontrolu. Je třeba podotknout, že CAPTCHA funguvala pouze několik týdnů, než se jí roboti naučili
obcházet. Lze ji ale použít jako součást komplexní obrany proti spamu a věřím, že se díky ní počet spamů alespoň sníží.
Filtrace slov
Buy cialis, buy viagra, buy ..... Spammeři nám opravdu nabízejí všelicos a naštěstí se rádi donekonečna opakují. Následující metoda sníží lehce
svobodu návštěvníků serveru, ale věřím, že minimum z nich bude chtít diskutovat o viagře a pokud ano, tak se to naučí obejít. Stačí jednoduchý
skript.
blind unfriendly
Další nápad obrany proti spamu využívá toho, že roboti vyplňují formuláře poslepu. Past je opět jednoduchá. Nastražil jsem na ně dvě pole formuláře
s lákavými názvy "name" a "message". Těmto polím jsem pomocí css dal "neviditelnost" (size=1 style="border:0;backround:stejna barva jako pozadi stranky").
Pokud je šikovně umístíte, běžný uživatel si jich stěží všimne a šance, že do nich klikne, je velmi malá. Pokud tak ovšem omylem učiní a něco vyplní
bude zase upozorněn, že vyplnil nesprávná pole.
Na závěr bych podoktnul, že ani přes tři silné vrstvy ochrany proti spamu si nějaká ta nabídka hry v kasinu cestičku vždycky najde. Případně se často objevují i prázdné formuláře (vyplněné zřejmě netisknutelnými znaky - protože mám kontrolu vyplnění polí formuláře), které mají asi za úkol zkontrolovat existenci a funkčnost potencionálního cíle. Další ostré střely už mají cestu dost stíženou. Daly by se použít i jiné formy ochrany proti spamu například banování IP adres - to jsem ale ani nezkoušel, protože pochybuji o tom, že by všechen spam mířil z jedné adresy. Pokud máte nějaké zajímavé nápady nebo výhrady, tak si je určitě rád přečtu.