Niels Gamborgs online notesbog

Spam bekæmpelse igen igen

juni 24th, 2007. Kategori: Webudvikling

Så er det anden gang jeg udråber min succes på spambekæmpelses området. Men denne gang virker det forhåbentligt. Her følger en mere eller mindre udførlig beskrivelse.

JavaScript

Første forsøg var ved hjælp af JavaScript at forbyde enkelte tegn”<” og “>”. Formålet var at forhindre robotter i at poste HTML tags og dermed links. Det virkede fint for almindelige brugere men åbenbart ikke for robotter, der stadig kunne poste links?  

Input felter skjult med CSS

Andet forsøg var at tilføje nogle tekstfelter til gæstebogs formular. Tekstfelter, der er skjult for den almindelige bruger med CSS’en. Når de bliver udfyldt kasserer jeg indlæggene med det samme v.h.a. noget php-script. Ved samme lejlighed lavede jeg en tæller, der talte de kasserede indlæg for at kunne holde øje med robotterne. Robotfælden var go’ nok og jeg fangede en del, men alt for mang slap stadig igennem.

Tredje forsøg gik ud på at tilføje endnu flere skjulte tekstfelter. Denne gang maskerede jeg dem bedre med forskellige class navne. Virkede ganske kort, men især en spammer fandt tilsyneladende ud af systemet.

Mere JavaScript

Fjerde forsøg. Forbød med JavaScript tegnene “&” og “#”. Troede at robotteren omgikkes forbudet mod “<” og “>” v.h.a. html speciel characters? Det gjorde ingen forskel overhovedet. Jeg har ingen idé om, hvordan de kan omgåes alle de forbud. Har du?

(fandt senere ud af at robotterne ikke udfylder formularer og derfor er ligeglade. Istedet sender de bare de data direkte, og derfor kommer JavaScript valideringen aldrig i brug)

PHP og htmlspecialchars

Femte forsøg. Brugte php funktionen “htmlspecialchars” til at stoppe html-tagsene. Det var anderledes effektivt. Robotterne kunne nu ikke poste links, men forsatte dog ufortrødent, selv om alle tags nu blev vist som alm. takst.

Sjette forsøg. Brugte nu php til at forbyde nogle af de samme tegn, som jeg også havde forbudt i JavaScript. Hvis en bruger taster et “<” får han at vide det er fejl. Hvis robotten gør det bliver indlægget kasseret. 

Det virker som om det sidste hul nu er lukket. Jeg har på 35 dage fanget 155 robotter, og sidder med følelsen af at endelig have vundet. 😀

Se min robot tæller der bare går højere og højere op.

Se Tokes originale opskrift på spam robot fælder.

  1. 7 Responses to “Spam bekæmpelse igen igen”

  2. By Niclas Ruff Gøttsche on jul 15, 2008

    Smart ide med at forbyde “”, men hvad nu hvis man gerne vil havde folk kan skrive links, og hvad så når spammerne finder ud af hvorfor deres inlæg ikke kommer på din gæstebog, begynder de så ikke på et eller andet tidspunkt bare at sende linket ?

  3. By Niels on jul 16, 2008

    Du har en rigtig god pointe, Niclas.

    Desværre fandt jeg ikke den optimale metode, da jeg i sin tid lavede det. Men en mulighed kunne være at kun tillade et link, det ville tage mange af spamindlæggende. Og måske også kun tillade links fra danske domæner, det ville sikkert rydde de sidste spammere af vejen. 😉

    Metoden vil selvfølgelig være noget programmering med Regulære Udtryk

    En interessant detalje er, at hvor min blog “kun” har været udsat for 3300 spamindlæg til nu, har min gæstebog overlevet 7300 spammers i det samme tidsrum. Så det er måske meget godt at få lukket hullet 100%, når man ikke har et proffesionelt programmeret spamfilter til at beskytte sig.

  4. By Niclas Ruff Gøttsche on jul 16, 2008

    Nu har jeg ikke selv oplevet så mange spambotter, men kunne man enlig ikke bare tving brugeren til at skrive sin e-mail, og så tjække om det domæne deres mail er på virkelig eksistere.

    Eller bruger robotterne en mail alla, et_eller_andet@hotmail.com ?

    For hvis de selv gennere en masse tegn i mailen, ville man jo kunne stoppe det på denne måde…

  5. By Niels on jul 24, 2008

    Jeg tror desværre ikke det er hensigstmæssigt at gå den vej.

    Spam robotterne genererer uden probemmer ganske tilforladelige mailadresser. Og i mange tilæde sandsynligvis også fungerende mailadresser, da de jo ofte reklalmere for forskellige domæner, hvor de også har tilknyttet en mailadresse.

  6. By John Lorensen on dec 27, 2009

    Kunne man ikke lave en tekst som skulle skrives i et felt? som man ser ofte på forskellige sider. Man kunne jo bruge en fast “kode” som den der skriver indlæg i gæstebogen skal skrive i et kodefelt.
    A la dette: Skriv dennen tekst “gæstebog” i feltet nedenunder.
    Kan bare ikke lave en sådanne tjek.

    Hilsen
    John L

  7. By Niels on dec 28, 2009

    Jo, det kan man selvfølgelig. Og det er ganske effektivt. Især hvis man stiller folk et simpelt spørsmål på dansk, som f.eks. “hvad er tre plus fire?”.

    Men et af formålene med hele øvelsen var netop at undgå at folk skal bruge tid på at validere at de er spamrobotter.

    Men med et anti-bot spørgsmål vil det f.eks. være både let og forholdsvis ufarligt at give brugerne adgang til at poste links.

  8. By Steen on feb 27, 2013

    Javascriptet virker ikke fordi robotter ikke er indstillet til at køre scripts, eftersom de oftest bare er i vejen.

    De simple danske spørgsmål kan man sagtens konstruere en robot til, det ved jeg af erfaring.

    Hvad angår captcha synes jeg det er en fin måde at blokere spam på. Der går vidstnok lidt tid inden man har styr på det, men personligt løser jeg reCaptchas så hurtigt så jeg får at vide at jeg ikke må logge ind fordi jeg angiveligt er en robot.

Skriv en kommentar