Spamroboti

Napadla mne ochrana navstevni knihy proti spamu pomoci casovace, treba 5 - 10s Mate s tim nekdo zkusenosti? Chtel jsem se zeptat, jestli to dnesni spamroboti nevobejdou Mam jeden web ktery mi spamroboti napadli, a viagry nebo porna uz mam dost :D Momentalne tam mam prikladek na pocitani, ale nechci aby tam byl...
tak pomoci JavaScriptu ten priklad spocitej, a cely to pole s tim pocitanim skryj (display: none)

spamboti JS nemaj, takze to nebudou pocitat.

a casovac? pokud mas na mysli ze je mozny poslat jeden prispevek za 10 vterin tak to ti bude na dve veci, vzhledem k celkovymu mnozstvi spamu (muj nazor)

podle me je doplneni neceho do inputu pomoci JS a skryti toho inputu pomoci JS dostatecny (dvakrat sem to pouzil a zadnej spam neni, i kdyz podle access logu se roboti snazej tak 100x denne)
Já s úspěchem používám 10 sec zpoždění. Tedy, že formulář nesmí být odeslán dříve než 10 sec po načtení (hlídám v php, javascriptem jen pro efekt zobrazuji odpočítávání) a doplňuji to neviditelným inputem, který nesmí být vyplněn (robot vyplňuje, všechno co najde). Tato kombinace mi funguje. Až se roboto zlepší, přitvrdím i já.
mno, to s tim zakazanym polem neni tak spatny, jeste jej mlsne pojmenovat name :D a roboti se chyti do pasti :)
Stim polem to je supr nápad, to si ukradnu :))))
A co uživatelé bez JS? (a že jich není málo!) spíš bych to kontroloval pomocí serveru, kde ti to nikdo nemůže ovlivnit:
1) při požadavku na stránku si zapamatuju unixovej timestamp a pošlu stránku
2) po odeslání formuláře se mj. kouknu na rozdíl aktuálního času a času vygenerování. Obyčejnou podmínkou přijmu / nepřijmu data ...
>> A co uživatelé bez JS? (a že jich není málo!)

no cely reseni pomoci JS je zalozeny na tom, ze ve formulari je nejakej input, oznacenej jakkoliv (treba "Kolik je 2+2"). ten input je normalne videt
ve strance ho potom pomoci JS schovas a pomoci JS do inputu napises vysledek. clovek s JS zapnutym nemusi nic delat, nic neuvidi. kdyz ma clovek JS vyply, tak input uvidi, a vyplni. boti JS nemaj, takze se samo nic nevyplni, a pochybuju ze by se zrovna trefili do spravnyho vysledku

a ze jich neni malo? zas to neprehanej
=Tom=
navíc zapomínáš že ten unixový timestamp tu může spamrobot taky 'upravit' před posláním :)

=Mike=
pres JS je to asi nejlepsi reseni :-D
(na rovine s generováním obrázku s textem :) )
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)
To je PHP

a pres JS mam takovou alternativu, viz muj guestbook.
Bohuzel teda boti maji mou adresu uz v seznamu, takze dost pozde aktivovane a asi bude zaspamovany, jdu to hned procistit.
Freeze:
"navíc zapomínáš že ten unixový timestamp tu může spamrobot taky 'upravit' před posláním :)"
tak to by mě teda zajímalo, jak? Jak může klient (spam robot) ovlivnit data uložená na serveru, když o nich ani neví? Jak ty, jakožto spamer budeš zjistíš, jestli:
- tuhle metodu vůbec používám
- ukládám timestamp do db
- ukládám timestamp do souboru
- ho posílám v šifrované podobě jako $_SESSION nebo $_COOKIES k uživateli
?

Čili, jak jsem již psal:
1) poznamenám si čas žádosti o formulář
2) poznamenám si čas odeslání formuláře
3) odešlu a podle výsledku se rozhodnu

"pres JS je to asi nejlepsi reseni :-D
(na rovine s generováním obrázku s textem :) )"
Neřekl bych, i když to používám, tak obrázek určitě není nejlepší řešení. Co postižení návštěvníci se čtečkou?
Mno ten obrázek není žádná sláva, třeba v phpbb foru sice nevím jak, ale ti spamboti ten obrázek umí přečíst a bez problému se registrují.

A zrakově postižených s čtečkou není tolik aby se pro to vyplatilo optimalizovat web.
Tak nic no, nelepsi mi teda prinde ten casovac nebo ten skryty input, to je dobra hajzlovina, du udelat input se jmenem name :D, ktery kdyz se vyplni te posle nekde uplne do haje :D
Tady je moje reseni u meho formulare v navstevni knize ;) se zvedavy jestli to bude tedka fungovat :D

<? echo "<INPUT type=hidden name=name><form action=insert$name.php3 method=post onSubmit='return zkontroluj(this)'><input type=hidden name=action value=send>";
?>
=Tom=
tak jestli si to mysel takhle tak si naprosty silenec ....... (zbytecne vytezovani serveru kvuli (opravdu) hovadine! )
sem to pochopil ze jim tam necháš nekde v hiddenu timestamp, který musí být třeba ze stejného dne .....
Budulínek s.r.o (osvk.wz.cz)
Input mimo formular nema smysl.
Jinak ja tam mam reseni takove, ze mam FORM action="" a action doplnim az jako vysledek JS. Da se to obejit, a postizeni maji smulu, jestli nemaji JS, ale zas normalni bot da form submit a nic se neodesle, pac neni action.
"Boti JS nemaji"

uz jsem se setkal s BOTem, ktery normalne provadel JS (neni to az takovy problem). Rekl bych, ze jsou schopni i zjistit, ktere pole je skryte, takze variantou zustava napr. input, ktery je pomoci position:absolute nebo relative prekryt jinym inputem nebo input oznaceny nevyplnovat...
Nebo (a to pouzivam i ja) mit kalkulacku. Zadani vypisuje cesky ("Kolik je šest krát pět?") a reseni posilam hashovane nejakou % funkci. Zatim jsem v pohode :-)
tohe: Mno, vypocet sem tam mel drive, ale scitani je jednodussi :D
vecer sem dam zdrojove kody meho antispamu ;) Uz jsem to dodelal, je to mozna slozite, ale hlavne ze to funguje...

Co se tyce tech robotu co rozpoznaji pole kde se nesmi psat podle name=hidden z tech strach nemam, kdyztak udelam normalni pole ktere splyne s pozadim, normalni uzivatel si toho nevsimne, ale robot se chyti...
"normalni uzivatel si toho nevsimne, ale robot se chyti..." a co uživatelé procházející formulář TABem?

Jo a jinak: v dnešní době jsou boti (teda spoň ti lepší) natolik vyspělí, že dokážou pomocí OCR přečíst i velké množství počmáraných a zdeformovaných písem, JS už také dávno není problém (prohlížeče JS zvládají, tak proč boti ne?)

A ještě něco: máš malé (malé = málo návštěvníků) fórum? Tak to ti stačí jednodušší ochrana.
Máš obrovské mezinárodní fórum? Tak počítej s kupou útoků a pracuj na silné ochraně.
Tak jak jsem slibil dodavam zde muj antispam k robotum ;)



v navstevni knize (jak ji vidi uzivatel) je umisten tento script:

<?
$antirobot = "888";

echo "<INPUT type=hidden name=name>
<form action=posli$name.php3?antirobot=$antirobot method=post onSubmit='return zkontroluj(this)'><input type=hidden name=action value=send>";
?>

Je to proti robotum vysoce efektivni, kdyz robot vyplni pole (ktere se k tomu jmenuje lakave name) tak to ma za nasledek ze formular je po odeslani odeslan na adresu treba

posliJohny.php3?antirobot=888

A hodi mu to error ze soubor neexistuje ;) Uzivatel pole nevidi tudis jej ani nevyplni, takze se formular odesle na

posli.php3?antirobot=888

Promenna $antirobot slouzi v dalsim souboru k zjisteni zda-li uzivatel prichazi z navstevni knihy nebo zda li jde o robota (nektery robot navstivi pouze odesilaci soubory)


Dalsi soubor se jmenem

posli.php3

ma za ucel zjistit zda jde jde o uzivatele ci robota (pomoci promenne $antirobot) Dalsi soubor v rade se jmenuje

insert_zapis888.php3

Tudis jestlize neprinde z navstevni knihy promenna $antirobot, hodi to opet error. Tento soubor zaroven preposila promenne z navstevni knihy dale, tento soubor je jiz normalnim odesilatelem souboru nebo do databazi.

<?
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=posli_zapis$antirobot.php3?jmeno=$jmeno&pastau=$pastau&stranky=$stranky&zprava=$zprava'>";
?>


Tak, tady je muj maly navod jak oblbnou roboty, profik programator muze podotknout ze je to slozite, ale myslim ze je to funkcni. Chybmi v zapisu se nezabyvejte, jsem jeste zacatecnik a lama, nemam na to skolu a jsem samouk ;)
pouzivam 10 sekund zpozdeni s tim, ze cas nacteni stranky s formularem ukladam do hidden inputu v tom formulari. kontrola v php, pro efekt odpocet na tlacitku v js. prave mi pres to jeden robot prosel. uvidim dal, jestli projde jeste nejakej. mozna ten js tomu robotovi pomohl...
Na mou knihu uz nemuze :) Dycky navsevoval okolo 8 hodin rano a dopoledne, asi uz se mu nedari nic zapsat :D
Budulínek s.r.o (osvk.wz.cz)
Mno, tak ty v celku muzes udelat totez, co se dela s mailem...
mail123wz.cz -> JS -> mail@wz.cz
action="zpracuj123php" -> JS -> zpracuj.php
Jestli můžu přidat svou trošku do mlýna, tak mně se osvědčilo zobrazování náhledů komentářů. Je to sice pracnější, ale má to i užitnou hodnotu pro návštěvníka.
jak jsem psal 14. 04. 2007 10:20, tak prosel dalsi. takze to reseni je k nicemu. podle logu pristupu, kde ma robot tri pristupy za sebou, to odhaduju takhle: robot nacte stranku, vyplni a odesle form. zkontroluje vysledek. pokud neuspeje, pocka nejakou dobu a pak odesle ten stejny form - cili prekona tu nastavenou prodlevu, protoze posle ten stejnej form jako predtim s tim stejnym = starym timestampem. sice v tom logu nemam cas i s vterinama, takze to neni uplne uplne jisty, ale asi to tak bude