Autor Zpráva
rad
Profil *
Na strance garaztattoo.cz/guestbook.php mam jednoduchy guestbooku prestoze je tam kontrola proti spamu spam mi chodi vesela dal poradily byste mi nejake jednoduche reseni ? dekuji
Watchick
Profil
Podstata anispamu je v tom, že tam dáš nějakou hádanku, či obrázek, co vyluští pouze uživatel, když dáš 1+1 tak nejen že si to robot přečte a sečte, i kdybys tam měl 2 na 10, tak si to robot přebere a pošle zpárvné údaje... A pokud už, tak minimálně zkus změnit občas ten příklad, protže, kdyby se ti tam náhodně objevovaly příklady bylo by to o dost lepší, Jinak nouzové řešení je vyměnit příklad (což by mohlo fungovat, a pokud to neni extrémě chytrý robot tak změnit formulářová políčka)

(změníš name) třba z jmeno na nick
nebo na cokoliv jiného...
imploder
Profil
http://www.dreamface.net/michal/?face=zajimavost&c=31
HamStet
Profil *
2Watching

Měl jsem podobný problém. Párkrát jsem ho "řešil" přejmenováním formuláře (pomohlo tak na 2 měsíce) a seznamem zakázaných slov a domén. Jako účinné se ukázalo použít jednoduchou kontrolní otázku slovně a česky, samozřejmě taky vyžadovat česky odpověď. Roboti zpravidla česky neumí. Funkce je tady:

//generovani a vyhodnoceni kontrolni otazky
function kontrola($fce, $vstup = 0) {  //pri fce=0 a 2 vypise zadani, pri 1 kontroluje, jinak nic nedela
  $vystup = "";

  if(($fce == 0)||($fce == 2)) {                      //generuji se nahodna cisla a prevadeji na otazku
    $cislice = array ("nula", "jedna", "dvě", "tři", "čtyři", "pět", "šest", "sedm", "osm", "devět", "deset" );
    $ra1 = mt_rand(1,8);
    do { $ra2 = mt_rand(1,6); } while(($ra1 + $ra2) > 10);

    $vystup = "Kolik je <b>".$cislice[$ra1]." a ".$cislice[$ra2]."</b >? (Slovem):&nbsp;";
    }

  if($fce == 1) {
    $vzor = array ("nula", "jedna", "dve", "tri", "ctyri", "pet", "sest", "sedm", "osm", "devet", "deset" );
    $vstup = strtolower(substr(trim($vstup), 0, 5));
    $vstup = strtr($vstup, "\xe1\xe4\xe8\xef\xe9\xec\xed\xbe\xe5\xf2\xf3\xf6\xf5\xf4\xf8\xe0\x9a\ x9d\xfa\xf9\xfc\xfb\xfd\x9e\xc1\xc4\xc8\xcf\xc9\xcc\xcd\xbc\xc5\xd2\xd 3\xd6\xd5\xd4\xd8\xc0\x8a\x8d\xda\xd9\xdc\xdb\xdd\x8e","aacdeeillnoooo rrstuuuuyzAACDEEILLNOOOORRSTUUUUYZ");
    $vystup = array_search($vstup, $vzor);

    //zjednoduseni - nekontroluje se spravnost vysledku, jen zda je poslana slovem cislice mezi 1 a 10
    }

  return $vystup;
  }


Celé je to prohlédnutí na
http://www.hamstet.info/ a z menu zvolit knihu hostí

Kontroly na zakázaná slova a pod. jsem nechal jako doplněk.

Uznávám, že Škarbálkovo řešení, odkazované imloderem, je elegantnější
jansfabik
Profil
HamStet
ta "česko-slovácká" ochrana má podle mě nevýhody:
1. pokud uživatel není čech, tak s tím může mít problém
2. „nekontroluje se spravnost vysledku, jen zda je poslana slovem cislice mezi 1 a 10
není problém tam vždycky hodit třeba "pět" - tím to skript vyhodnotí jako správný výsledek
3. máš vůbec ošetřeno, jestli uživatel napíše třeba "sedum", "osum", nebo pokud to slovák napíše slovensky?

je otázkou cca. 15 vteřin nastavit robota tak, aby tam vždycky hodil "pět" a máš okamžitě zaspamovanou diskusi

myslím, že je lepší to udělat naopak, třeba na imgway.eu to tak mají - ale tady se dá robota zase nastavit za cca. 5 minut aby rozluštil to číslo - ale tady nechápu smysl proč by si někdo dělal tolik účtů :-)
HamStet
Profil *
2jansfabik:

1. Jistě, pokud uživatel není Čech (nebo Slovák), tak si na tom webu vůbec dost málo užije. Je směrován na určité (řekněme česky rozumící) čtenáře.

2. Jistě, robota lze nastavit aby odpovídal "pět", ale kdo by to kvůli jedné (a minoritní stránce) dělal? Roboti jsou směrováni především na jiné trhy a česky je nikdo učit nebude, to mu nestojí za to. Mimo to, pokud bys neviděl tu funkci, musel bys chvíli testovat, abys pochopil, že, vrácená hodnota není důležitá, pokud je z určité množiny.

3. Většina Slováků je schopna, když na to přijde, napsat číslici i česky. Tvary "sedum" a "osum" bych ošetřit mohl, to je pravda. Je to jeden řádek navíc.

Netvrdím, že je to dokonalé, ale od zavedení (cca rok a půl) jsem nemusel žádný spam vyhazovat. Předtím jsem musel čistit databázi v průměru jednou týdně.
imploder
Profil
HamStet
Robota lze naučit i čísla v různých jazycích včetně češtiny. I místo okamžitého posílání zařadit stránku do fronty a odeslat spam až o chvíli později (a mezitím spamovat na dříve navštívených stránkách, kde už potřebná doba uběhla). Divil bych se, kdyby to žádný robot neuměl. Překvapivě ale tak primitivní věc jako brát příspěvky až po určité době (uživateli aspoň pár vteřin trvá napsat i krátký příspěvek, robotovi ne) velice dobře funguje. Roboti jsou prostě blbci, neznamená to však, že se nedají naprogramovat líp (ale naštěstí se tak zatím nestalo).
2. Jistě, robota lze nastavit aby odpovídal "pět", ale kdo by to kvůli jedné (a minoritní stránce) dělal? Roboti jsou směrováni především na jiné trhy a česky je nikdo učit nebude, to mu nestojí za to. Mimo to, pokud bys neviděl tu funkci, musel bys chvíli testovat, abys pochopil, že, vrácená hodnota není důležitá, pokud je z určité množiny.
To ale není jenom jedna stránka, takovou ochranu používá plno stránek.
PP
Profil *
Vyhol by som sa rôznym otázkam typu "Koľko je x+x".
U bežných užívateľov je JS povolené, tak stačí obdobné riešenie ako je na tomto fóre. Skrytý input, ktorého správna hodnota bude vložená pri odoslaní formulára pomocou funkcie v JS. Takto neotravuješ užívateľa nejakými rátaním a čo je podstatnejšie, neodradzuješ ho vo vypísaní formulára krokom navyše. Ak je potrebná vyššia ochrana, resp. ak to umožňuje aplikácia je zavolať session. Robotom sa väčšinou nemá kam cookies so sessionId zapísať. Kombinácia oboch je imúnna pre, nazval by som, "bežné roboty". Ak by to nestačilo treba použiť CAPTCHA, aj keď pozor aby bol text čitateľný a nebol skôr hlavolamom(male, veľke písmená, rôzne fonty, zlé pozadie).
Už ak sa na Teba zavesí robot, čo by prelomil kombináciu uvedených (číta JS, CAPTCHA, vie si zapísať cookies, pracuje s časovým odstupom čo spomínal imploder), tak aj to sa dá riešiť.
Phantom_cz
Profil *
Použijte ještě jedno submit tlačítko, které umístěte jako první a dejte mu jinou proměnnou než tomu pravému. Pak mu nastavte pomocí CSS vlastnost Hidden. Spam robot vyplňuje všechny formulářové proměnné (ne však formuláŕ samotný) a pak odešle určenou metodou. Ovšem odešle také proměnnou prvního submitu. Pokud to zpracovávající skript zachytí, jednoduše se příspěvek nezapíše. Normální uživatel druhé tlačítko vůbec neuvidí :-)
Joker
Profil
Phantom_cz
Použijte ještě jedno submit tlačítko, které umístěte jako první a dejte mu jinou proměnnou než tomu pravému. Pak mu nastavte pomocí CSS vlastnost Hidden.
Vlastnost Hidden není, je to display: none ;)
Je to účinná metoda, tak to mám na webu- krom odesílacího tlačítka je tam ještě jedno skryté s popiskem "Zahodit příspěvek" :-) (kdyby na to náhodou někdo koukal s vypnutým CSS). Zahozené příspěvky ukládám do logu za účelem statistiky a případných dalších protispamových opatření.

Pokud má web větší návštěvnost, doporučil bych to kombinovat s nějakou další metodou, protože třeba u mě přes to jeden(?) šmejd prošel. Každopádně můj web není moc frekventovaný, takže těch pár spamů co projde zvládám mazat ručně.

Pro informaci ohledně účinnosti, u mě za posledních pár měsíců z celkem 129 pokusů dokázala ta výše uvedená metoda vyblokovat 119 (tj. 10 prošlo).
rad
Profil *
ja sem to vyresil takhle :) a od te doby zadny spam...tak snad bude pokoj
www.garaztattoo.cz/guestbook.php
diky za vsechny prispevky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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