conBLOG

25. 5. 2005 středa

Antispam nebo anticomment

Když je vše v pořádku, tak je něco v nepořádku. Jenom o tom nevíte. Už dřív jsem měl takový divný pocit. A ten se mi začíná potvrzovat. Systém proti komentářovému spamu, který jsem v tichosti nasadil začátkem února 2005, podle všeho odmítá některé komentáře (nebo některým všechny, nebo některým některé, nebo všem některé).

Když komentářový antispam požírá komentáře, je to taková nepříjemná patálie. Po nasazení antispamu na stařičký publikační systém b2 se všechno zdálo v pohodě. Automaticky vkládaný spam zmizel jako mávnutím kouzelného proutku. Přesto ve mě občas zahlodalo podezření, že sovy nejsou tím, čím se zdají být (kdo ví, odkud je tento citát, získá 10 bodů). Mé podezření se potvrdilo. Od soboty mi přišly už 2 e-maily na téma zruš si ochranu proti spamu.

Abych rozmotal celé klubko, přidám pár informací o antispamové technice, kterou používám:

  • Ve formuláři pro zadávání komentáře mám skryté pole, do kterého vkládám hashovanou hodnotu proměnné $REMOTE_ADDR - hodnota pole se předává skriptu pro zpracování formuláře.
  • Skript pro zpracování formuláře znovu zjišťuje hodnotu proměnné $REMOTE_ADDR a opět ji hashuje.
  • Následně skript pro zpracování formuláře porovná předanou a nově hashovanou hodnotu. Pokud nejsou stejné, vypíše hlášení Your comment has been filtered as a SPAM!

Vycházel jsem z toho, že spamovací robot přistupuje do skriptu, který zpracovává komentáře, přímo bez toho, aby otvíral stránku s komentářovým formulářem. A opravdu. Spam ustal a já byl rád, že nemusím denně mazat stovky řádků v databázi. Ale jak se zdá, tak ustaly i komentáře některých čtenářů (u některých mě to hodně mrzí). Omlouvám se.

Pomůžete mi odhalit v čem je zakopaný hafák? Proč některým z Vás nejde zapsat komentář? Jakým způsobem píšete komentáře? Je něco shnilého na mém antispamovém řešení? Chtělo by se mi napsat, abyste své poznatky zapsali do komentářů, ale to asi některým z Vás nepůjde (následuje další má omluva) - přesto to zkuste. Použijte tedy prosím kontaktní formulář. Můžete také psát na e-mail bures@centrum.cz.

Souvislosti

Komentáře

1 endlife E-mail Web

25. 5. 2005 středa, 17.04

tp, 10 points award!

by mě zajímalo, jestli třeba takovýto příspěvek antispam pustí, zkratka+anglická slova, vykřičník, na to by už měl být nějaký bayes pomalu alergický ;-)

2 endlife E-mail Web

25. 5. 2005 středa, 17.06

a rázem ukazuju, že jsem úplně mimo, protože po zmínce o sovách jsem se jal komentovat bez přečtení techniky antispamu :) sorry za spam..

3 Pachollini Web

25. 5. 2005 středa, 17.19

Ach jo, tak jsem přišel pozdě a 10 bodů za DL nebude :-(
Třeba SwitchProxy rozšíření pro FF umí měnit proxy server po uplynutí nastavené doby, ale takových superparanoiků asi moc nebude.

4 Jan Bien E-mail Web

25. 5. 2005 středa, 18.03

[3] Tak, tak. IP adresa se může dynamicky měnit, ať už z jakýchkoli důvodů. Za pár vteřin je najednou dostupnější nějaký jiný proxy server a ejhle, stejný uživatel a jiná IP. Kdesi jsem o tom četl (v učitelských novinách to ale nebylo) a nemohu si vzpomenout kde jen to bylo.

5 me E-mail Web

25. 5. 2005 středa, 18.13

Zkousel jsem radu zpusobu. Nejvice se mi osvedcila pouha zmena nazvu komentarovych poli (Bud ruco fuco (cca.5min)) a nebo skrz řadu WYSWYGu, ktere umozni nahradit dany vyraz, vyrazem urcenym...

Simple, ale funguje (delam to kazdy tyden a bez problemu:)

6 endlife E-mail Web

25. 5. 2005 středa, 18.18

[4] to s tím střídáním proxyn mě taky napadlo, a snažím se o tom najít něco bližšího - ale přišlo mi absurdní, že by se střídaly tak rychle, že by to určitého uživatele úplně vyřadilo z možnosti komentování..

7 Leo

25. 5. 2005 středa, 18.35

Ja jsem na to narazil pred casem taky - na tu rychlou zmenu IP adresy, delalo to nekterym uzivelum pripojeny pres dial-up a musel jsem prehodnotit system prihlasovani. Udelejte si test - ukladejte si cookie a IP adresu a uvidite jestli mate stejnou cookie pro ruzne IP rychle po sobe, Leo

8 llook Web

25. 5. 2005 středa, 19.17

Já mám ve formuláři skryté pole s názvem článku. Spamů mažu asi tak pět za měsíc - řekl bych, že ručně přidávaný.

9 Jiří Bureš Web

25. 5. 2005 středa, 19.41

S rychlou změnou IP by to byla pěkná patálie. Musel bych používat jiný vstup pro hashování (teď je to ip adresa). ID spotu nebo něco podobného by ale podle všeho mohlo stačit. Uvidím, na co příjdou další komentující.

10 keff

25. 5. 2005 středa, 19.45

My mame na skole proxy cache a ta zpusobuje ze tak co pul minuty menim IP, protoze proxy ma z nejakeho duvodu zvenku nekolik IP a mezi nimi uzivatele vicemene nahodne prepina. Takze i sluzby jako el. bankovnictvi jsou nepouzitelne, protoze jedna session je vzdy s jednim IP, a to tu vydrzi nekolik desitek sekund...

11 Llaik

25. 5. 2005 středa, 19.55

Pokud se nemylim, zkus se pripojit pres Eurotel a sleduj svou IP adresu.

Mozna souvislost s jejich transparentni cache... ale jsem laik, se v tom nevyznam, jen davam stripky co jsem tak poruznu zaslechl :)

12 Alex E-mail Web

25. 5. 2005 středa, 20.09

Tak z notebooku, který mám připojený do sítě přes ten počítač ze kterého to nejde se komentář odeslat podařilo... To sem blázen.

Btw. sovy jsou z městečka Twin Peaks. :o)

13 llook Web

25. 5. 2005 středa, 20.55

Taky je možné pro hash zkombinovat název spotu s datumem. A pak testovat třeba proti několika dnům zpátky a doufat, že nikdo nebude posílat komentář později než týden od načtení formuláře.

14 Yuhů Web

25. 5. 2005 středa, 20.57

Ráno mi přidávat komentáře nešly. Zkusím to tedy nyní znovu. Fajn, zabil to zdejší antispam. To se dalo čekat.

Jdeme dál. Vypínám Google Accelerator. Co teď? Zase odchyceno.

S vypnutým acceleratorem zkouším reload celé stránky.

15 Yuhů Web

25. 5. 2005 středa, 20.59

Takže, jak se ukazuje, pes byl zakopán v Google Acceleratoru. Kdyžtak http://webaccelerator.google.com/ , zjisti si IP adresu, tuším, že tam byla nějaká sedmdesát dvojka.

16 Medhi E-mail Web

26. 5. 2005 čtvrtek, 0.17

Některé osobní firewally (třeba Kerio, ale záleží na nastavení) blokují proměnnou $REMOTE_ADDR a ta je pak prázdná. Nemůže to být ono?

17 FiJi Web

26. 5. 2005 čtvrtek, 10.09

Některé cache servery (i transparentní) používají více IP adres, kvůli rozkládání zátěže. Někde jsem četl o tom, že byla snaha, aby se pro jednoho uživatele používala stejná IP, ale to byl asi jen jeden produkt, evidentně to není všeobecný zvyk proxy serverů.

Rychle se IP adresa může měnit také při přidělování přes DHCP - tam se adresa přiděluje buď na hodně dlouho (v řádech desítek hodin až dní), aby měl počítač relativně stálou adresu, nebo na krátký čas (v minutách), aby se rychle vracely nepoužívané adresy. I když pokud má počítač přidělenu IP adresu, měl by při obnově dostat přednostně tu samou...

Takže bych to viděl nejspíš na ty proxy servery. Slušný proxy server by ale měl posílat hlavičku s původní IP adresou, což ale asi některé paranoidní proxy nedělají.

Ad [16] Kerio blokovat $REMOTE_ADDR nemůže, tu proměnnou si zjišťuje server na základě IP adresy, odkud přichází spojení (a to blokovat nelze, protože - zjednodušeně - jinak by server nevěděl, kam má odpovídat)

18 dgx E-mail Web

26. 5. 2005 čtvrtek, 10.37

> Vycházel jsem z toho, že spamovací robot přistupuje do skriptu, který zpracovává komentáře, přímo bez toho, aby otvíral stránku s komentářovým formulářem.

Proč tedy hashovat právě $_SERVER['REMOTE_ADDR'] ($REMOTE_ADDR už prosím ne)? Vždyť můžu hashnout cokoliv. Například vygeneruju náhodné číslo, to vložím do "hidden" pole formuláře, dále k tomuto číslo připojím určitý řetězec (sůl), hashnu a dám do druhého "hidden". A pak jen porovnám.

Při připojování aktuálního dne / hodiny do hashe je třeba dávat pozor na to, že formulář mohu načíst např. v 15:59 a odeslat v 16:10

19 Jiří Bureš Web

26. 5. 2005 čtvrtek, 10.54

[18]
>Proč tedy hashovat právě $_SERVER['REMOTE_ADDR']
Protože jsem ten algoritmus převzal od kohosi chytrého (včera před psáním spotu jsem hledal zdroj, ale nenašel) a moc jsem nad tím nehloubal. Říkal jsem si, že chyba rychle vyplave. A ona mrška rychle nevyplavala.

> $REMOTE_ADDR už prosím ne
Rozkryjte mi (coby PHP laikovi) problém s $REMOTE_ADDR.

>Vždyť můžu hashnout cokoliv.
A tak to taky budu dělat. Prosolení je samozřejmost (i když pro tento účel možná nebude nutné).

20 Medhi E-mail Web

26. 5. 2005 čtvrtek, 12.09

[17] Opravdu jsou lidé, kteří $_SERVER['REMOTE_ADDR'] mají prostě prázdnou, já jsem kvůli tomu musel zrušit jedno ošetření proti spamu, které jsem také používal. Nevím přesně, co tuto proměnnou blokuje, ale vysledoval jsem, že právě lidé s firewaly ji nemají.
Jednoduše chci říci, že na základě $_SERVER['REMOTE_ADDR'] nelze stavět, musí se na to asi jinak.

21 llook Web

26. 5. 2005 čtvrtek, 18.48

[18] proto jsem psal o přidávání datumu, ne času. A pak to kontrolovat proti několika předchozím dnům.

Prostě aby formulář měl omezenou životnost - pokud by nějaký robot formulář načetl, tak aby ho po týdnu musel načíst znova.

22 spaze Web

27. 5. 2005 pátek, 12.25

[20] neverim, firewall nemuze zablokovat adresu, odkud prichazeji pakety, nepletes si to s HTTP_REFERER?

jinak zmenu IP muze zpusobovat DHCP, coz tu bylo zmineno (Leo a dalsi, jen *ta* zkratka chybi ;)

23 spaze Web

27. 5. 2005 pátek, 12.26

[22] resp takto, firewall u klienta nemuze zablokovat "prosaknuti" IP adresy v TCP/IP stacku na serveru z nejaky nizky urovne, kde se to spojuje na uroven vysokou do PHP engine.

24 dgx E-mail Web

27. 5. 2005 pátek, 12.46

[19] $REMOTE_ADDR je překonaný přístupu k vnějším proměnným. Doporučuje se používat $_SERVER['REMOTE_ADDR']. V současných verzích PHP už ve výchozím nastavení ani starý způsob nefunguje (je třeba manuálně změnit direktivu register_globals na on).

25 Jiří Bureš Web

27. 5. 2005 pátek, 12.52

[24] Díky.

26 spaze Web

27. 5. 2005 pátek, 16.57

[25] jinak popsano ji to i treba tady: http://interval.cz/clanek.asp?article=2264

27 Jan Tichý Web

5. 6. 2005 neděle, 13.35

Takové průběžné změny IP adres klienta dělají i některé bránové routery, zpravidla u větších společností, pravděpodobně pro rozložení zátěže. Vím, že se přesně takhle chovaly (a možná ještě chovají?) přístupy z české pobočky IBM, kdy každý dotaz od stejného klienta šel z jiné IP adresy.

Jestli by nebylo lepší použít analogickou kontrolu předchozího zobrazení formuláře, ale nikoliv přes uchování hashe IP adresy, ale přes sessions (potažmo přes cookies). Sice by se tím odfiltrovali uživatelé bez cookies (dobře jim tak :), ale hlavně snad všichni roboti.

28 Michal Aichinger E-mail Web

16. 5. 2008 pátek, 11.22

[27] testovat zobrazeni formulare

tak tohle jsem zavedl - do session jsem si ukladal cas zobrazeni a musel byt do 30 min od odeslani a spam to neomezilo, takze vetsina spam botu co chodila ke me tohle zmakla levou zadni

Nový komentář







Odřádkovat odstavce v komentáři (pomocí <br>)

Můžete použít HTML značky. URL začínající http:// se převedou na odkaz (z obou stran musí být mezera).

« starší článek   · • ·   novější článek »

Od roku 2002 conBLOG píše Jiří Bureš, conVERTER

Tip: Eva Herodková: masáže v Kroměříži, Tandemové seskoky padákem