Spamovana navstevni kniha

Dobry den rad bych se zeptal jak mam zabranit spamovani me navstevni knihy. Kazdy den mi nejaky idiot posle prispevky skladajicise z dlouheho odkazu na eroticke stranky.

Vice na http://uranit.wz.cz/kniha/kniha.php3

Predem dekuji za radu Uran

PS: zdrojovy kod knihy je na http://uranit.wz.cz/file/kniha.zip
Zkus tam přidat input s nějakou jednoduchou otázkou typu "jseš robot", to by mohlo pomoci.
zkus odkazy ze:
http://hepbegclub.idt.cz/view.php?cisloclanku=2006051701
Co jsem koukal tak to vypada na robota.

Pokud je to robot, na toho se da snadno vyzrat - staci treba tridat do formulare pro pridani prispevku text: "ANTISPAM: prosím, napište do políčka, kolik je čtyři plus tři (slovně)" a pole a před přidáním kontrolovat to pole na rovnost s textem "sedm".
aspon to odfiltruje i maniky, kteri napisou "sedum" ;)
Jojo, chvili jsem premyslel jestli mam poradit "...a porovnej to s texty 'sedm' a 'sedum'" :P
Dalsi metoda je odfiltrovat IP adresy zaskodniku. Problem je vsak zjistit jeho IP adresu. Ten kdo ma podrobne pocitadlo a vyzna se v tom, tak to zjisti. Moje kniha timto zpusobem pracuje a uspesne. Ze zazmamu svyho pocitadla jsem zjistil, ze mne bombarduji rusove (193.93.x.x a 81.177.x.x). A stale bombarduji, avsak uz neuspesne ;)
Zkusím navrhnout další 2 řešení:

1. Na serveru GD jede knihovna, takže není problém chránit formulář obrázkem.

2. Udělej si JavaScriptovou funkci, která ti do hidden políčka vloží po několika vteřinách text "NOSPAM".

... no a potom kontroluj správnost kódu/hodnotu hidden políčka.
Tom: ad bod 2: lepsi by bylo vytvorit hidden policko, do kteryho se php skriptem vlozi aktualni unix timestamp, a pak po odeslani kontrolovat rozdil casu, pokud bude formular odeslan do (treba) 5 vterin od zobrazeni, tak je to od spamrobota
Tomik: ako sa da zistiť z IP adresy lokalita útočníka, sú nejaké tabuľky (štát-->IP)? Kde to zohnať? a aké php f-cie používaš pre counter?
Já v poslaném textu hledám HTML odkazy, pomocí regulárního výrazu. Roboti posílají jenom příspěvky s nimi. Je to možné samozřejmě jen u knih, kde lidi nedebatují o HTML, psaní stránek, atp.
barguzin: tomu, co hledas, se rika whois. Napr. http://www.ratite.com/whois/whois.cgi.
barguzin, Wegguy: Nevim jak, kdy funguje. Tady je podle mě spolehlivější: http://tools.rosinstrument.com/cgi-bin/wi.pl?
popřípadě rovnou s ip: http://tools.rosinstrument.com/cgi-bin/wi.pl?q=xxx.xxx.xxx.xxx (vhodné pro scripty t důvodu výsledků).
<HTML>Pokud je tvuj web pro CZ/SK pouzij GEO IP ve scriptu</HTML>
barguzin, all: To co pouzivam ke zjisteni statu se nazyva GeoIP. Tento skript jsem kdysi nasel na netu a trochu poupravil podle svyho. Kdo ma zajem, tak davam link na skript (http://tom.czweb.org/down/geoip.zip [460kB]).

Priklad pouziti:
include("geoip.php");
echo get_geoip_country_name($ip); // Nazev statu
echo get_geoip_country_code($ip); // Kod statu

Jinak je mozne klidne pouzit i WHOIS, ale ten by byl zdlouhavy (nacteni-hledani-parsovani-vystup).
Richard: Diky za napad. Ja to zatim pouzival tak, ze blokuji existujici IP. Nevyhodou teto metody je novy spam, ktereho pak musim zabanovat.
Myslenka pouze pro urcity stat se mi docela zamlouva.
No nevím, ale blokovat podle GEO IP se mi nezdá nejvhodnější. Co kdy6 je uživatel zrovna v té zemi, nebo používá proxy z té země (třeba firemní)? Přitom existuje spousta jiných možností. Vždy je to o kompromisu mezi obtěžováním uživatele a robustností řešení. Tady máte shrnutí:

http://www.root.cz/clanky/komentarovy-spam/

Já vždy zkouším jít od nejmenší zátěže pro uživatele. Většinou stačí dát prodlevu mezi zobrazením formuláře a odesláním (roboti jsou rychlí). Na několika svých webech mám 15 sekundovou prodlevu, kterou vyhodnocuji v PHP a zároveň javascriptem odpočítávám na tlačítku Odeslat. Když máte vyplnit jméno, název příspěvku a text, těch 15 sec je tak akorát.
<HTML>Ja obycejne kdyz jsem v cizine (dovolena atd.) tak na net nemusim... a ti kteri tam pracovne musi nejspis na weby umistene na wz nechodi ;)</HTML>
Podle sebe soudím tebe?

V cizině jsou i lidé na dlouhodobém pobytu a internet používají také ve svém volném čase. I v Česku existují skupiny počítačů připojené do mezinárodních VPN s proxy do internetu v zahraničí.

Připadá mi zvrácené, že zrovna na internetu, který nezná hranice (geografické ani politické), se věnují aktivity pro eliminaci navštěvníků stránek podle GEO IP. Navíc už dnes se přiděluje segment IP adres s identifikací EU, takže nepoznáte, ze kterých zemí přesně přichází.
Tak zjišťování časové prodlevy není moc účinný. Zkusil sem si dat prodlevu na 10s a hned první robot ji měl 45s, takže příspěvek do návštěvní knihy v klidu přidal. :(
Tak pouzit to co uz vetsina pouziva - zadani obrazoveho kodu do formulare.
Jinak mensi reakce pro zbi: Samozrejme blokovat podle GeoIP neni rozumne, ale clovek, ktery toto pouzije musi vedet co dela. Pokud vi co dela a co to pro jeho knihu znamena, tak muze byt GeoIP ucinejsi nez treba casova rezerva.
Ja zatim pouzivam metodu blokovani IP adresy, ale zrejme prejdu na blokovani podle statu, pac vim, ze moji knihu bombarduji vetsinou rusove a vim, ze zivy rusky obcan moji knihu nikdy nepouzije. Jeste abych se ucil rusky ;) No a pokud jde treba o ceskeho turistu v Rusku, tak pochybuji, ze by tam mel cas si zajit do internetove kavarny a nahodou navstivil moji stranku a neco zapsal do knihy.

Proste pokud jde o metody blokovani spamu, tak je pouze na tvurci knihy jaka metoda je pro nej lepsi. Kazda metoda blokovani ma sve vyhody a nevyhody.
Mě teď napadlo, myslím, docela rozumný řešení. Pro návštěvníky z ČR a SR nechat knihu normálně (jako předtím, bez žádné kontroly) a ostatním nabízet onu jednoduchou otázku "kolik je tři plus čtyři" apod. Toto se dá pochopitelně použít pouze v případě, že na web seriózně přistupují jen lidé mluvicí česky/slovensky, což ale v drtivé většině případů platí.
Tak jsem zjistil, že GeoIP nepomáhá! :(
Omlouvám se, měl sem chybu ve skriptu, takže odvolávám, co sem napsal minule. :)