Autor Zpráva
Sirius
Profil
Říkal jsem si jak vytvořit antispam. Projel jsem diskusi a jako nejlepší řešení se jevil Javascript, který pokud je zapnutý vyplní hodnoty a skryje políčka týkající se antispamu, a následné testování v PHP.

Dnes jsem se proklikal na stránku http://dero.name/weblog/ie7-bug-mizejici-obsah-zmizik/ , kde je ochrana řešena JS antispamem a v komentářích je spam. Pochybuju, že by někdo prolejzal web a spamoval manuálně. Pokud vím tak JS ochrana je i tady na fóru a žádný spam jsem tu nikdy neviděl...

Další příklad neúčinné ochrany. Na mém dřív poměrně obsáhlém fóru (běžícím na phpbb - nejaktuálnější verzi) se velmi rozrostl spam, jednalo se o několik desítek příspěvků denně. Tak jsem smazal všechny uživatele od kterých příšel nějaký spam - bylo jich několik stovek -, zablokoval několik IP ze kterých přišlo nejvíce útoků a zvýšil znečitelnění captchy při registraci skoro na maximum. Čekal jsem aspoň zmírnění útoků, ale ani omylem, pokračovalo to pořád stejně. Chtěl jsem se optat, jak je to možné. Moc se mi nezdá, že by například ty boti nezvládali JS.
Matty
Profil
Sirius:
To není zrovna dobrý příklad - bot mohl číslo uhádnout nezávisle na JS.
Tuším, někde na diskusi se válí seznam řešení antispamu, z paměti si vzpomenu např. na falešný input nebo měření doby vyplňování formuláře.
Sirius
Profil
Matty:
falešný input nebo měření doby vyplňování formuláře

Pod tím prvním se dá představit spousta věcí. To druhé zní dobře. Poohlédnu se ještě tady na diskusi. Kdyby jsi to náhodou našel, tak to sem prosím dej.

A jak je to s tou captchou? Něco takového bych asi vytvořit nezvládl, takže bych šáhl po hotovém řešení. Ale moc bezpečné se mi to nezdá vzhledem k těm tisícům spamů co jsem mazal...

Napadl mě obrácený postup než je na zmíněné stránce. Ukázat číslo a vyžadovat slovo. S tím, že v DB by byli varianty čísla, která by uživatel mohl zadat. Např. s diakritikou, bez ní atd. Uživatele by to snad moc otravovat nemělo, většina snad má JS zapnutý.
vynalezce
Profil
Sirius:
S tím, že v DB by byli varianty čísla, která by uživatel mohl zadat. Např. s diakritikou, bez ní atd.

Lepší by bylo převézt to do určitého tvaru například na malá písmena bez diakritiky a mít v db uložené jen hodnoty v tomto tvaru.
MCKAY
Profil
Já používám ještě jednu věc, kterou by si ty ve svém případě mohl využít také. Prohoď názvy inputů pro email a web (name).

Když se input pro web bude jmenovat email a input pro email jmenovat web, robot automaticky podstrčí do inputu s name="web" webovou adresu. Pokud při vkládání kontroluješ správnost tvaru emailu, tak tim rozpoznáš, ze je to robot, nebo že špatně vyplnil email.
Matty
Profil
Sirius:
Pod tím prvním se dá představit spousta věcí.
Dáš inputu nějaký lákavý název, "emai", "url" nebo třeba i "antispam". Tento input skryješ → člověk políčko neuvidí, takže jej nebude moct vyplnit. Robot ho s největší pravděpodobností vyplní. Pak na serveru stačí zkontrolovat stav políčka.
Chamurappi
Profil
Reaguji na Siria:
Pokud vím tak JS ochrana je i tady na fóru a žádný spam jsem tu nikdy neviděl...
Před rokem tu pár spamů bylo. Někteří roboti číslo uhodli (tenkrát tu byla čtyřka). Jeden robot si dokonce zapamatoval, které údaje mu prošly, a opakovaně se do jednoho vlákna vracel i pod stejným jménem. Koncem minulého roku jsme antispamové číslo změnili a od té doby si tu žádný robot neškrtnul, pokud vím.


Reaguji na MCKAYe:
Když se input pro web bude jmenovat email a input pro email jmenovat web
… tak mi jako uživateli prohlížeč našeptá (či předvyplní), abych do kolonky web napsal některý z e-mailů, které jsem psal na jiných webech, a do kolonky e-mail napsal některý z webů, které jsem psal na jiných webech. Do téhle pasti na roboty můžeš chytit i méně pozorného uživatele.
MCKAY
Profil
Chamurappi:
Díky, to jsem si neuvědomil, alespoň mám po dlouhé době námět na přemýšlení o něčem jiném než je škola.:-)
Alphard
Profil
Návrh na vylepšení captchy doublethink: Textová 3D CAPTCHA.
Sirius
Profil
Koukám, že se tu objevilo docela dost různých řešení.

Co jsem z toho pobral, tak pro registraci asi nějakou složitější ochranu, např. captcha a pro nějaké to zasílání příspěvků, třeba bez registrace, stačí ochrana přes JS?

Chápu, že hodně lidí bude mít zájem oblafnout velké projekty jako je phpBB, ale taky předpokládám, že dost lidí se bude snažit tomu zabránit. Tak jak je možné, že jsem se těch spamů nemohl zbavit?

Taky mi přijdě divné to s těma OCR. Robot dokáže rozluštit zdeformovaný text z obrázku a JS nepřekouše?

Matty:
Tento input skryješ
Můžu mít dotaz jak skrýt? Opravdu nevím jak ti boti fungujou, co všechno zvládnou. Jestli nad to mám něco napozicovat, nebo to můžu skrýt přes CSS vlastnost?

Chamurappi:
Aha, v té době jsem si zrovna dával pauzu. Ale jestli tu funguje "obyčejná" kontrola přes JS, tak asi není důvod bát se nasadit to na nějakých menších projektech.

Alphard:
Zajímavej článek. To jsem ani netušil, co všechno se dá v PHP vykouzlit.
Matty
Profil
Sirius:
Můžu mít dotaz jak skrýt? Opravdu nevím jak ti boti fungujou, co všechno zvládnou.
Až do takového stádia jsem to nezkoumal. Používám display:none; v CSS souboru, zatím se to zdá dostačující.
_es
Profil
Sirius:
Robot dokáže rozluštit zdeformovaný text z obrázku a JS nepřekouše?

Neoplatí sa mu to, pretože si takúto ochranu môžu dovoliť len malé weby a každý môže použiť nejakú inú fintu v JS, takže by ten robot musel podporovať kompletný JS.
Zato obrázková ochrana je používaná všade skoro rovnako a to aj na veľkých weboch.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: