Avatar billede dr-jay Nybegynder
14. februar 2007 - 22:12 Der er 4 kommentarer og
1 løsning

Javascript kode for at undgå SPAM i gæstebog.

Jeg anvender en gæstebogskabelon (til mit site www.ulfkoch.dk), hvor i der ikke er nogen SPAMkontrol. Jeg fandt dog hurtigt ud af at dette var nødvendigt, da jeg nu får enorme mængder SPAM i gæstebogen. Til at starte med havde jeg et felt som skulle udfyldes og hvor jeg i Javascript tjekkede om feltet indeholdte den korrekte værdi, men det hjalp ikke, da kode og dermed tjekket af feltet var tilgængelig for spammerne. Jeg ændrede det til et tjek på indhold og forsøgte så at skrive alle de ord en besked ikke måtte indeholde:

function isSpam(str)
{
    str = str.toLowerCase();
    var regex = /href|http|check|this|free|cool|thank|site|very|porn|viagra|honda|<a|anal|sex|mature|funny|the|transsexual|hentai|clip|lesbian/gi;
    return regex.test(str);
}

Men det er heller ikke effektivt nok og virker ikke optimalt. Det undre mig at der kommer beskeder i gæstebogen, som jeg ikke selv kan få lov at indsætte beskeder, fordi de bliver fanget af isSpam tjekket.

Jeg leder efter en sikker metode til at undgå SPAM evt. ved at brugeren skal indtaste værdien i et image der bliver vist.

Jeg håber på nogle har et bud på en løsning.

Venligst
Jeppe
Avatar billede michael_stim Ekspert
14. februar 2007 - 22:15 #1
Du kan lave et simpelt randomgenereret regnestykke, som så sender dig videre til gæstebogen.
Avatar billede mbagge Nybegynder
15. februar 2007 - 12:13 #2
Mange af disse spamposts, sendes direkte til modtage siden, og går altså ikke gennem formularen. js checks ifm submit af formularen har altså ingen virkning her.

Jeg har fornyligt (i asp) lavet en session metode hvor jeg på formularsiden sætter session("gbcheck") = brugerens session id.
På modtagesiden checker jeg så at disse værdier er lig hinanden (= at brugeren er kommet fra formen) Efter post nulstiller jeg sessionen, så man ikke kan refreshe siden, eller lave flere posts direkte.

Jeg har ikke fået et eneste spam indlæg siden, men om dette kun virker indtil spammerne opdager hvilken metode jeg bruge, skal jeg ikke kunne sige endnu

/Bagge
Avatar billede mcgoat Nybegynder
15. februar 2007 - 12:16 #3
Du kan sætte en <input type="hidden" name="isspam" value="">

og så når formen bliver submittet spørge på om isspam er sat til noget. Det vil den nok være hvis det er en bot der har udfyldt den
Avatar billede mcgoat Nybegynder
15. februar 2007 - 12:17 #4
Ellers ville jeg nok prøve at oprette spørgsmålet i enten ASP eller PHP kategorien alt afhængig af hvilket sprog det er lavet i. Så kan du lave et server-side check istedet
Avatar billede dr-jay Nybegynder
15. februar 2007 - 19:55 #5
Jeg flytte spørgsmålet til PHP og takker for svar og kommentarer.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester