Poslední dobou mi chodí do knihy návštěv obrovské množství spamu. Data z formuláře jsou posílána přes POST, takže nechápu, jak to spameři dělají. Jak lze tomu zabránit? Už jsem zkoušel dát do formuláře skryté pole s kódem, který se testoval těsně před zápisem dat do MySQL tabulky, ale pomohlo to asi na 2 dny. Je možné to vyřešit?
<HTML>Tady je toho docela dost - http://www.webzdarma.cz/forum/read.php?f=2&i=34886&t=34886.</HTML>
Hm ... tak to určitě jde. Je kupa možností a každá má svý pro a proti:
1) CAPTCHA - obrázkový kód
+ pro admina jednoduché
+ zatím má celkem slušnou účinnost
- otravuje uživatele
- problém s "postiženými" přispivateli (těmi, kteří potřebují pro práci s počítačem OCR)
2) JS - většina dnešních robotů neumí JS
+ neobtěžuje
- co uživatelé bez JS?
3) Otázky - třeba "kolik je jedna + jedna", "napiš, co je za rok", ...
+ jednoduché
+ zvládá 99% návštěvníků webu
- obtěžuje
- pokud si spamer upraví robota na tvé otázky, tak ti je snadno prolomí
atd, atd ... projdi si Gůgl, určitě najdeš kvanta informací
http://www.volny.cz/peter.mlich/www.htm#msub11
# peter-mlich.wz.cz PHP guest book (5k antispam) (POST)
# www.volny.cz/peter.mlich (zdroj: PPguest5.txt)
http://www.volny.cz/peter.mlich/guestbook.htm
JS antispam - zobrazit zdrojovy kod.
No těch ochran je fakt hafo, stačí trochu zagůglit :))
Já jich používám taky několik:
1) i když je to minus, jak správně tvrdí Tom, to kontrolní políčko sem musel přidat: kontrola v js i v php. input se jmenuje výztižně ICQ ;-)
2) kolonka pro mail se menuje web, a kolonka pro web se menuje email. (myslím, že se roboti řídí tímhle, ne tím, co je napsaný ve vedlejší buňce tabulky...) No a když se v kolonce email vyskytne zavináč, tak robotovi řeknu něco pěknýho.
3) mail není povinnej, takže sem zakázal příponu .com - je to sice další omezení uživatelů, a v hlavičce formuláře je na to upozorňuju.
4) nejlepší by asi bylo, prostě zkontrolovat, jestli se v textu zprávy nevyskytuje řetězec http:// víc než třeba 5x, a takovou zprávu neuložit. to ale neumím :(
5) + zakázat v htaccessu přístup z různých exotických spammerských zemí: čína, rusko, ukrajina...
Mike:
"... jestli se v textu zprávy nevyskytuje řetězec http:// víc než třeba 5x ..."
něco takovýho by ti nestačilo:
if(substr_count($_POST['message'], 'http://') > 5) exit('Zlej spamer, moc zlej! Ale já sem ještě větší svině! :)');
Jinak vzhledem k tomu, že dnešní roboti (teda ti lepší), dokáží "přečíst" i jednoduché CAPTCHA kódy, tak potěš pánbůh. Za chvíli budem testovat tak, že pokud bude obrázek opsanej blbě, tak jsi člověk a pokud dobře, tak jsi robot ;)
No a ještě něco: pokud autor robota bude chtít spamovat zrovna tvou knihu, tak si k tomu robota upraví přímo pro tvůj formulář a bude mu úplně jedno, jestli se pole pro email jmenuje "web","abrakadabra","ICQ", nebo jakkoliv jinak.
Já osobně preferuju turingovy testy. Dokud budou stačit, tak je budu používat a až padnou, tak začnu využívat dalších vychytávek, který mám nachystaný ;)
Tom (manual.wz.cz)
nastesti jsme jeste dneska napred :)
ja tam treba mam ochranu pres JS s tim, ze action=""
pak tam mam action=p , kdyby byl robot, co hleda action :)
pak se dost casto pouziva scitani 1 + 4 = [...]
pak se ty kody daji rozumne napsat jako text ruzne velikosti pismen, ruzneho natoceni a ruzneho fontu a jeste ruzne barvy. Pres text rozsypes caj a to by melo stacit. Pokud ne, nejak to precaras.
Na caj pouzijes nahodny generator, takze by to nemelo byt jednoduche odstranit.
Moje ochrana je v detekci zemi pres geoip. Vetsina mych navstevniku jsou z Ceska, pripadne ze Slovenska. Ostatni (spameri) maji smulu. Uspesnost 100% a uzivateli nemusi trapit mozek.
A kdyby neco. Uzivatel je predem upozornen, ze je odjinud a pokud specha, tak at pouzije email.
Taky přidám svoje zkušenosti. Zatím jsem vystačil s 15 sekundovou prodlevou (vyhodnocuji v php a javascriptem odpočítávám) a mám tam neviditelný input s názvem "subject". Skutečný input subject jsem nazval česky "predmet". Jakmile robot aktivně vyplní subject, neukládám.
Takže uživatele nijak neomezuji. Za těch 15 sec sotva stihne zapsat zápis.
Peta:
"nastesti jsme jeste dneska napred :)" zase až tak jistě bych to netvrdil ...
... nebudu sem dávat přímé linky, ale na anglické Wiki najdeš několik odkazů na projekty, které captcha lámou jak prd!
VSTÁVAT, hoří nám u pr... u zadku =)
Tomík: tak to se máš, mít fórum pro pár vyvolených, ale co až budeš dělat větší projekt, kam budou moci přispívat lidi z celého světa?
Zbi: a teď si vem uživatele bez JS (třeba paranoidní kousci sedící za 8 firewally a ještě blokujou všechny typy skriptování, uživatelé MP[mobile phones {třeba moje šunka neumí ani pořádně stylovat, natož nějaký JS}] ). Kde pak jsi? He?
PS: dneska sem sem se od sekretářky dozvěděl, že šéfůf noťas nesmí být zapojenej do sítě (myslela elektrickou síť), protože obsahuje tajný data a někdo by je mohl odcizit =)
Tom: v mém systému NEVADÍ, když má uživatel vypnutý JS. Vyhodnocuji to v PHP. Do formuláře dám hidden timestamp a po přijetí zkontroluji těch 15 sec. Javascriptem POUZE odpočítávám těch 15 sec na tlačítku odešli. Kdo nemá JS zapnutý, odpočítávání nevidí (jen pro efekt), ale na funkčnosti to neubere.
Zatím mi to funguje, až se roboti zlepší, přitvrdím taky-
Na tu captchu kterou ste spominali me dnes napadl zlepsovak pro zrakove postizene... Jen nevim jestli to pak spamboti nebudou mit lehci s jejim lustemim... Viz: http://firstpage.profitux.cz/?page=kniha Co si o tom myslite?
Rellik: zajímavé, ale moc lidem to asi nepomůže ;) Pokud bude někdo pro práci s PC používat OCR, tak to nepřečte, ani kdyby to bylo přes celou obrazovku.
Co by spíš pomohlo, tak po kliknutí otevřít nové okno, ve kterém se ti nechá přehrát nějaký WAV, nebo tak něco...
BTW: tvůj kód bych tipoval tak, že v 75% případů jej půjde bez problémů prolomit. (ten můj na 100% =)
Začíná nám tu vznikat pěknej flame ;-)
» Tomík: souhlas s Tomem, není to úplně nejlepší... mě už otravovalo tolik spam-botů s českou IP...
» Rellik: dřiv si tam měl jiné obrázky - připadly mi mnohem čitelnější, tohle sotva přečtu i já (brýle sice nenosím ale tak 0.5 určitě mám)
Jinak podle mě ta časová prodleva je dobrá investice do budoucna... A co se týče robotů a Javascriptu, už sem měl taky jednoho, kterej mi javascript v klídku obešel.
Tom (manual.wz.cz)
Vis, jak to je. Vzdy se da vymyslet neco proti a neco, co to naboura :)
Vetsina lamacu obrazku je dle meho nazoru zalozena na detekci pisma, fontu nebo na scanovacich ucicich algoritmech. Proste vyzkousi vsechny nejpravdepodobnejsi pismenka
- vyzkousi ruzne natoceni a kde mu to sedi na nejvic 80% a vic, nastavi jako nejpravdepodobnejsi pismenko a pak zkousi, dokud nedostane odpoved nebo nenastane zmena na strance. (mimo zmeny obrazku)
- mno a detekce, treba podle barvy
Si myslim ja a na takoveho robota se da vymyslet rada fint, jak mu to ztizit.
Treba pismenka nebudou mit po cele delce stejnou barvu.
Pismenka budou mit nekolik ruznych fontu.
Pismenka budou proderavena cajem (aby se hure chytal scan algoritmus)
Pismenka muzes ruzne natoci
Take je muzes zvlnit, roztancit (a to uz snad robot nedokaze odchytit)
./\
.--
/..\
takovy acko v klidu, ale zkus zvlnene :)
.//
.--
\..\
peta:
"takovy acko v klidu, ale zkus zvlnene :)
.//
.--
\..\
"
A číst to bude kdo? Mysli taky trochu na lidi.
Jinak bych to zkusil shrnout asi takhle: obyčejné "pidi" fórum, kam přispívá všehovšudy 5 lidí denně dostatečně ohlídá nějaký jednoduchý JS nebo obyčejná CAPTCHA. Čím větší a navštěvovanější fórum, tím důraznější ochranu bych zvolil. (kombinaci toho nejlepšího, co jakožto programátor dokážu dát dokupy ;)
BTW: nedávno jsem četl něco o jednorázových klíčích (nejde o náhodně vygenerovaný kód, nebo tak něco!). Tohle sepsat a nasadit, tak máš zaručeně vystaráno na dlouhou dobu. Teda dokud se někdo nenaštve a neudělá ti na server nějaký DoM, nebo tak něco ;)