Spravil som si jednoduchý mail formulár a na aku-takú ochranu proti spam robotom skúšam generovať jednoduché rovnice. Sú to dve stránky :
Formulár pre vyplnenie údajov a
druhá stránka ako prímateľ. Výsledok z rovnice prenášam medzi stránkami cez session. Ako som sa dočítal a aj na opere otestoval, bez cookies to nejde. vtedy treba použiť SID. Čiže teraz sa pýtam, ako to tam zakomponovať.
na začiatku oboch stránok mám:
<?php session_start(); ?>
V tej prvej ešte navyše :
$_SESSION['cislo'] = 40;
A potom už len odkazujem
$_SESSION['cislo'] = ...
Stránky si pozrite, len mi neposielajte e-maily (Pre otestovanie stačí vyplniť len rovnicu, nie všetky údaje).
Ďakujem
<input type="hidden" value="rovnica">
pre lepsiu ochranu mozes value aj nejak zakodovat a potom dekodovat. A pokial si taky paranoik ako ja, mozes do rovnice povkladat rozne dalsie prvky, aby oddelovali jednotlive znaky, tak aby sa zneprehladnil zdrojovy kod, ale aby vysledok bol citatelny, popripade na viacere riadky.
A ako som si vsimol, tu na LinuxOSe nerataju s tym, ze by mal niekto vypnute cookies, zeby zamer? ;-)
Ja som to riesil na jednej stranke tak, ze som vyuzil fakt, ze roboty nevedia javascript.
Dalej som vyuzil stary dobry captcha, ktory je vsak potrebne vyplnit iba ak ma uzivatel vypnuty javascript, inak sa vypise javascriptom cez document.write cely string potrebny pre captcha - <input type="hidden" name="string_captcha" value="jds32n">, ten sa odosle a je preveri, ci to bol robot, alebo nie.
Ak ma user vypnuty js, tak ide tag <noscript>, kde je zobrazeny obrazok, z ktoreho uz treba opisat znaky do <input type="text" name="string_captcha">
Funguje to super, nechodi mi nic, zakaznikov to absolutne nerusi.
Na captcha vsak potrebujes generator obrazkov dostatocne necitatelnych pre robota, ale citatelnych pre cloveka a to moze byt problem, pretoze vela botov je stavanych tak, aby captcha vedeli rozpoznat. Na druhu stranu sa da spravit aj zopar obrazkov, kde bude text absolutne citatelny a bude tam napisane "Aky je teraz rok" a pod., boti to opisu, clovek na to odpovie :-) problem vsak nastava, pokial chces brat do uvahy aj ludi, ktori nepracuju s grafickym browserom, cize sa im obrazok ani nezobrazi, vtedy ani javascript nefunguje.
A momentalne posledna taka metoda, ktora ma napadla a da sa pouzit, je policko s nazvom "som robot" clovek nevyplni a kedze robot vyplna vsetko.. tu by sa to dalo napr. javascriptom skryt, aby to nerusilo vacsinu.. ta mensina je vacsinou dost intelignetna na to, aby to ignorovala.
a samozrejme je dobre, ak policko "meno" nepomenujes "meno" a pod., alebo ked to poprechadzujes... vtedy sa tiez da odchytit robot, ktory dlhsi text zada do pola "sprava", "text" a pod. (samozrejme v textarea) Ale tu moze nastat problem pri kratkych prispevkoch.
A najhorsia varianta je, ked niekto napise bota priamo pre tvoju stranku a bude ho podla zmien tiez upravovat, vtedy je takmer nemozne ho odstavit.
Takze vyber je len na tebe. Mysli vsak na vsetkych citatelov :-)
to je trochu extrem, kvalitne ho vediet nebudu nikdy, alebo aspon nie tak skoro
"Na captcha vsak potrebujes generator obrazkov dostatocne necitatelnych pre robota, ale citatelnych pre cloveka a to moze byt problem, pretoze vela botov je stavanych tak, aby captcha vedeli rozpoznat."
zabudol som spomenut, ak je clovek velmi paranoicky, treba to spravit riadne necitatelne, inak je to ok, staci len trochu zamachlit
"A najhorsia varianta je, ked niekto napise bota priamo pre tvoju stranku a bude ho podla zmien tiez upravovat, vtedy je takmer nemozne ho odstavit."
To by si musel mat riadne dobry obsah, alebo tvorca boota by musel byt riadny curak
Alebo oboje 8-)
staci ak je postaveny napr. na Gecku a kvalitnejsie uz snad ani nepotrebuje :-) ale to sa uz skor spaja s tou najhorsou variantou - riadne dobry obsah a riadny curak :-D
vo vacsine pripadov staci hocico jednoduche aj jednoduchsie ako captcha :-)
Ak ano, SESSION_ID sa defaultne bude posielat cez cookie. Ak ich ma vsak klient vypnute, musis SESSION_ID poslat v URL. V takom pripade musis vsetky odkazy na stranke generovat v nasledovnom formate
No a najlepsie je tento system vylepsit tak, ze podla tej funkcie na zistenie podpory cookies budes nastavovat nejaku konstantu na bud prazdny retazec, alebo na "PHPSESSID=1234567890" a do kazdelo prikazu na vypis ,
<a href
tu konstantu zakomponujesOtázka pomimo: Nie je problem pre robota zmenit hodnotu "referer", ktoru mi bude posielať?
Kodovanie javascriptom: To som uz mal, na to som uplne zabudol, to tam dorobim.
Srigi : Dakujem za riesenie, poobzeram, ked sa budem zase venovat mail formularu, dorobim.
"Osobne sa mi to riesenie zda byt dost intrusive."
Ako som si pozrel v slovniku "intrusive" je dotieravy. Mohol by si upresnit?
(Alebo narazas na lenivost userov?)
Ja neznasam vyplnanie nejakych formularov, len kvoli tomu, aby sa overilo, ci neni som nejaky robot.
S tou captchou som nemal nikdy problem, od kedy som ju zaviedol, lebo uz sa to nedalo nevydrzat, ako som to musel premazavat, takze myslim, ze zabralo to.
Ja nenarazam na ich lenivost, ale ak user = zakaznik, tak chcem pre neho co najvacsie pohodlie, ak je zakaznik 40+ a este zena, tak niekedy nepochopi naco sluzi taka antispam ochrana.
Ved kazdy vie aki ludia mu chodia na stranky a co si na nich moze dovolit :)), ale ja vyslovene uz neznasam to vyplnovanie.
Mas pravdu ze je to tak trochu otravne, ale co ja viem. Otravne by sa mi zdalo uplne zdeformovane captcha, ktore ma clovek problem precitat.
mimochodom tam chyba "&PHPSESSID=.."
http://www.root.cz/clanky/komentarovy-spam/