Új (hozzászólás) SPAM elleni védekezés

Be kellett építenem egy spam robotok elleni védelmet és közben jött egy új ötlet, amivel kivédhetőek lassíthatóak lehetnének ezek az üzenetek.

spamAki már foglalkozott ilyennel biztosan ismeri a leggyakoribb megoldásokat:

  • captcha
  • kérdés-válasz
  • CSS mező elrejtés
  • javascript trükkök
  • stb.

Nekem az jutott eszembe, hogy mi lenne ha figyelnénk a beküldött üzenet hosszát és az eltelt időt. Sőt ezt igazából két felé lehetne szedni:

  • egy kliens oldali JS ami figyeli a leütött karakterek számát (egy spam robot valószínűleg mindent “pastel” CTRL +V azaz 3 input mező kitöltése 3 “leütés” lenne)
  • szerver oldalon minden formos oldal kapna egy key-t + egy időpontot, a POST eseménykor az elküldött kulcshoz tartozó időpontot összehasonlítaná a POST-al és a beküldött adatok hosszával

Két egyszerű és gyors tesztet végeztem:

  • “blabla” begépelés: 5 másodperc alatt 60 leütés ez 12 karakter / sec, ezzel egy 1kb-os üzenet írása ~85 másodperc
  • 67 karakteres cikk cím beírása (többszöri próbálkozás): 10 másodperc ami 6,7 karakter / sec (kb. duplája az előzőnek)

Természetesen tudom, hogy ez is áthidalható, kikerülhető és a rövid üzeneteknél nehéz figyelni (átcsúszhatnak), de ha csak arra gondolok, hogy ezzel nem tudnának másodpercenként 50 linket tartalmazó szöveget küldeni már jó lehet.
Sőt igazából ez egy kiegészítő, előszűrő lehetne, szerver oldali és konfigurálható beállításokkal.

Minden más megoldásra lehet spam plugint készíteni, azaz ha a Gaba féle “Milyen nap van most?” elterjedne angolul vagy átlépne egy bizonyos népszerűséget akkor biztosan reagálnának rá a szemetelők is, de a fent említett idő figyelésével legalább lassítható lenne a tevékenységük. Talán el is venné a kedvüket.

A kérdés-válaszos módszert ha lenne lehetőségem simán beépíteném az e-mailezésbe is! X helyes válasz után felkerülne az accept listára a küldő.

7 megjegyzés »

  1. zsolti

    # 2007. augusztus 1., szerda - 19:30 · válasz erre

    én már látom ahogy zimbabwe-i fiatalok yahoo answers-szel a hónuk alatt óránként 1 centért boldogan válaszolgatnak ezekre az e-mailjeidre…

    tökéletes megoldás sajnos sosem lesz, de azért ez így elméletben jól hangzik. btw. lehetne első szűrőként kliensoldalon is számolni. indítasz egy timert amikor a form valamely elemére kerül a focus, meg egyet onsubmit-ra, és ha a kettő közt eltelt idő és/vagy az inputok hossza nem ok, akkor valami fake címre submitol.

  2. dusza erika

    # 2007. augusztus 6., hétfő - 18:45 · válasz erre

    szia,
    szeretnék tőled kérdezni valamit, ami nem ide való (noha a blogoddal kapcsolatos), kérlek, küldj egy mélcímet a fenti címre.
    köszönet

  3. gex

    # 2007. augusztus 14., kedd - 16:32 · válasz erre

    én csak azt nem értem, hogy js-sel hogyan is tudnál megakadályozni egy spambotot. azok csak kielemzik a html-t, és postolnak egyet (többet), nem pedig egy js-t is ismerő böngészőből küldik a spam-et, nem?

  4. gex

    # 2007. augusztus 14., kedd - 16:34 · válasz erre

    ja igen, a karakter/másodperc alapú ellenőrzés viszont elég kreatív ötlet szvsz.

  5. benjamin

    # 2007. augusztus 14., kedd - 16:49 · válasz erre

    gex: a fene se tudja pontosan hogyan spammelnek, nekem van olyan gyanum, hogy vmi bongeszo szeri program is dolgozik nehany esetben vagy ahogy zsolti irta zimbabwe-i sracok toljak $100-os laptoprol a spam uzeneteket :)
    koszonom, szerintem is eleg jo :) csak a rovid (ok, igen, szerintem is, stb.) - egyszavas - uzeneteket nem tudom hogy lehetne kikuszobolni

  6. gex

    # 2007. augusztus 15., szerda - 12:58 · válasz erre

    a rövid üzenetek írása előtt is el kell olvasni a bejegyzést, nem? igazából csak akkor van probléma, ha már a főoldalon elolvassa az ember a bejegyzést és utána rákattint a megjegyzések linkre és már írja is, hogy “ja”. ezekben az esetekben mondjuk ki lehet írni, hogy túl gyors voltál, vagy valami hasonló.

    a js problémára visszatérve meg az esetleg lehet kiegészítő megoldás, bár néha én is szoktam kopipesztelni (jellemzően iwiwen, ahol mire megírsz egy levelet kidob a rendszer, szóval előbb írom notepad-ben, bemásol, elküld, utóbbi két lépés ciklusban :]), de szvsz az ultimate megoldás tényleg az lenne, ha amikor kiküldöd a formot, generálsz egy kódot ami egyből meg is jelenik egy hidden inputban, és amikor beesik a kitöltött form, akkor leellenőrzöd, hogy mennyi idő telt el, meg egyáltalán érvényes-e a kód.
    ez még arra a problémára is megoldás lehetne, hogy bizonyos esetekben, mondjuk ha lassú az internet, akkor te post után már csak egy fehér lapot kapsz és azt hiszed, hogy nem küldted be a hozzászólást (pedig de), vissza gomb, újraírás, elküldés és ki fogja írni a rendszer, hogy nem fogadja el, mert nem érvényes a kód (mivel az előző post után törölted).

    u.i.: szerintem a karakter/másodperc arányom is jó volt ezzel a hozzászólással. ;]

  7. Pairg

    # 2007. október 21., vasárnap - 22:05 · válasz erre

    Mindkét itt leírt módszert, és még egy-két hasonló dolgot használ a SpamKarma2 Wordpress plugin (http://wp-plugins.net/doc/sk2/). Nincs új a nap alatt.

RSS hírcsatorna a bejegyzéshez kapcsolódó véleményekről. · Visszakövetés

Mondd el a véleményedet!