24. marts 2006 - 14:29Der er
10 kommentarer og 1 løsning
spam i gæstebog
Er der nogen der kan hjælpe. Jeg har lavet gæstebøger på flere af mine hjemmesider, og mange af dem bliver angrebet af spam. Jeg har prøvet forskellige metoder for at undgå det, og mit primære mål er, at man ikke kan submitte, hvis der står www eller http:// i et eller flere af felterne.
Jeg tjekker først med javascript og derefter med asp. f.eks. på et felt: check1 = InStr(lCase(request.form("frmName")), "www") hvis en eller flere variabler er forskellig fra 0, så skal den ikke køre sql'en. Men der bliver ved med at komme spam. Jeg har logget ip adresser siden i går, og der er kommet 19, (alle forskellige). Måske er jeg offer for en seriøs gang sql injection. Er der nogen der har en løsning?
Det har ikke noget med SQL injection at gøre. Det er spam bots som finder gæstebøger og ligger rekalmmer i. De finder siden ud fra navnet gusetbook.asp
Jeg har brugt flere metoder til at løse det. Et felt hvor man skal skrive en kode som står ved siden af feltet. Den lette udgave er det altid er samme streng, over til at der udregnes en streng til hver form. Nå du modtage tjekker formen tjekket du control feltet indeholder den værdi det skal.
En anden ting er at havde en submit kanp som er usynliglig og en kanp som med javascript kalder form.Submit() spam bots vil bruge submit knappen. Du kan så igen tjekke om det er submit eller knappen der er aktiveret. Det kræver så at dem der skal skrive i gæstebogen har enabled javascript.
Sidste kopier filen til en helt ny og ret dine links på siden og behold den gamle fil som de har fundet og lad dem tro de gemmer i databasen når de submitter til siden.
Sidst har jeg lavet alle form input felters navne om fra "username", "email", "comment" til tilfældige strenge som "mf73ndm3uij". Det kan godt være det ikke har den store betydning, men det gør da man ikke ud fra navnet allene kan se formålet.
Jeg har lige fået et par tip. Jeg tjekker Request.ServerVariables("PATH_TRANSLATED") om der subittes fra 'det rigtige sted'. Jeg tror at der for det første submittes udefra, samt at links bliver indtastet i ascii kode. I må gerne indtaste svar, jeg tror jeg prøver lidt af hvert ;)
Jeg har også en meget stor interresse i dette spørgsmål. Jeg har lige måtte fjerne en gæstebog pågrund af hacker angreb. der var puttet diverse koder ind i min database. Jeg har dog politianmeldt idioten hvor IP´en kommer fra.
Så alt information som gør at man kan sikre sine gæstbog byder jeg velkommen. Jeg er ikke den store kode nørd sikkert derfor det har været muligt at komme ind.
Jeg har lige prøvet at spamme mig selv, og tjek på Request.ServerVariables("PATH_TRANSLATED") virker åbenbart ikke. I øjeblikket leger jeg med at lave et billede med aspImage med en genereret kode som skal indtastes i et felt. Denne kode ligger jeg så også i en session variabel, som jeg tjekker op imod. Det ser ud til at virke.
Så opstår et nyt problem, nok meget simpelt. Hvis man klikker rundt på siden, f.eks. ind i gæstebogen, (kode og billede) bliver genereret, væk og tilbage til gæstebogen, så har den cachet billedet, men koden er jo ny og passer derfor ikke til billedet. Jeg mener der er en meget simpelt metode, hvorpå man kan tvinge browseren til at hente billedet.
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.