Avatar billede frank74 Nybegynder
27. juni 2007 - 07:56 Der er 21 kommentarer og
2 løsninger

Undgå Spam i gæstebog.

Hejsa.
Min GB bliver i øjeblikket angrebet meget af Spam. Er der en effektiv løsning på dette? Lige nu har jeg et IP filter hvor jeg tilføjer spamernes IP adresse og så kan de ikke skrive i GBen mere. Det har virket i lang tid men nu er den gal igen og det er hele tiden en ny IP adresse hvorfra der bliver skrevet. (Der ligger over 200 IP adresser i filteret nu...)
Hjæææælp...
Avatar billede keysersoze Ekspert
27. juni 2007 - 08:14 #1
Mange laver en CAPTCHA-script som du kan læse lidt om fx her; http://www.eksperten.dk/artikler/1106 (eksemplet er PHP men idéen er den samme til ASP)

en anden og nok mere brugervenlig metode - som dog også kræver at brugerne har javascript slået til er at sætte dette på din submit-knap;

<input type="submit" onClick="document.getElementById('valider').value='Yes';" />

lave et hidden formfelt;

<input type="hidden" name="valider" id="valider" value="No" />

og så kan du serverside tjekke om formfeltet "valider" er Yes eller No - er det No er det en spamrobot, er den Yes er det en bruger og du kan indsætte indlægget i gæstebogen.
Avatar billede fennec Nybegynder
27. juni 2007 - 08:19 #2
Og brug Request.ServerVariables("HTTP_REFERER") til at sikre at du kun modtager data fra dit eget site.
Avatar billede hnteknik Novice
27. juni 2007 - 09:26 #3
Jeg har et par gæstebøger, som har været pested af spam.
Den mest effektive måde at sortere disse spamindlæg fra (og CAPTCHA scriptet jeg har forhindrer det ikke, så de må taste skidtet ind manuelt) er, at lave en instring kontrol af tilstedeværelsen af keywords som f.eks. http www  com like site ...
Hvis yes så sorteres de fra.

Jeg har skrevet om det tidligere, søg på hnteknik og de finder sikkert kodeeks. eller vend tilbage.
Avatar billede hnteknik Novice
27. juni 2007 - 09:33 #4
Avatar billede frank74 Nybegynder
27. juni 2007 - 10:03 #5
hnteknik -> Hvis mit script ser ud som følger:

<% Response.Expires = 0 %>

<!--#include file="tools.asp"-->
<%response.buffer = true%>
<%
If Request("Submit.X") <> "" Then
    OpenDB con, "gaestebog"
    SQL = "INSERT INTO Bulletin (fldName, fldEmail, fldReply, fldTitle, fldBody, fldIP, fldDate, fldTime) VALUES ('" & _
    Request.Form("Name") & "','" & _
    Request.Form("Email") & "',0,'" & _
    InsertAp(Request.Form("Title")) & "','" & _
    InsertAp(Request.Form("Body")) & "','" & _
    request.ServerVariables("REMOTE_ADDR") & "',#" & _
    Date & "#,#" & _
    Time & "#)"
   
    con.Execute(SQL)

    response.redirect "send_news.asp"
    End If
%>

Hvor skal det spamfilter du linker til, så puttes ind?
Avatar billede hnteknik Novice
27. juni 2007 - 10:18 #6
Noget i retning af detteher:

If Request("Submit.X") <> "" Then

  strKommentar= Request.>Form("Body")

if instr(strKommentar, "<") <> 0 _
    or instr(strKommentar, "http") <> 0 _
    or instr(strKommentar, "[") <> 0 _
    or instr(strKommentar, "Hello") <> 0 _
    or instr(strKommentar, "hey") <> 0 _
    or instr(strKommentar, "site") <> 0 _
    or instr(strKommentar, "like") <> 0 _
    or instr(strKommentar, "design") <> 0 _
    or instr(strKommentar, "your") <> 0 _
    or instr(strEmail, "com") <> 0 _
    then
        response.redirect("ØVBØV.asp")
    else
OpenDB con, "gaestebog"
    SQL = "INSERT INTO Bulletin (fldName, fldEmail, fldReply, fldTitle, fldBody, fldIP, fldDate, fldTime) VALUES ('" & _
    Request.Form("Name") & "','" & _
    Request.Form("Email") & "',0,'" & _
    InsertAp(Request.Form("Title")) & "','" & _
    InsertAp(Request.Form("Body")) & "','" & _
    request.ServerVariables("REMOTE_ADDR") & "',#" & _
    Date & "#,#" & _
    Time & "#)"
   
    con.Execute(SQL)

    response.redirect "send_news.asp"
    End If

    end if
Avatar billede hnteknik Novice
27. juni 2007 - 10:19 #7
Request.>Form("Body") -> Request.Form("Body")

Ups
Avatar billede hnteknik Novice
27. juni 2007 - 10:23 #8
Og instr(strEmail, "com") skal laves om til
instr(Request.Form("Email") , "com")

Du kan selv ændre listen til de ord, der dukker op hele tiden.
Det har taget pusten fra spammerne, der har det sidste halve år kun været en som røg ind, men det kan man jo aldrig undgå. Husk at have en admin slette mulighed.
Avatar billede frank74 Nybegynder
27. juni 2007 - 10:45 #9
Jamen det virker jo fint. ;-) Mange tak for hjælpen.
Avatar billede hnteknik Novice
27. juni 2007 - 12:45 #10
Selv tak :-)
Avatar billede frank74 Nybegynder
27. juni 2007 - 14:13 #11
Hmmm. Jeg har testet det ved selv at lave et indlæg i GBen og skrive "http" og der blev jeg stoppet... Fint nok.
Men nu er der igen blevet spammet og der indgår "http" også.
Hvordan kan det lade sig gøre??
Avatar billede hnteknik Novice
27. juni 2007 - 16:38 #12
Kan det stå med stort ?
Så lav noget med upperdet ene  = upper det andet
Avatar billede frank74 Nybegynder
27. juni 2007 - 20:18 #13
Nej det står med småt...
Avatar billede hnteknik Novice
28. juni 2007 - 13:23 #14
Hmmm - kan de have været så smarte, at det er kodet med f.eks. escapekoder, så skal vi bare checke for det. Kan du gå ind i databasen og se, hvordan karaktererne er repræsenteret!
Avatar billede hnteknik Novice
28. juni 2007 - 13:30 #15
Måske skal listen udvides med ord som script, escape, src, =, document, referrer,
Avatar billede hnteknik Novice
28. juni 2007 - 13:40 #16
http

skulle med escape codes blive

%68%74%74%70

ved at bruge allegoritmen
http://www.ecardiff.net/unescape.asp
Avatar billede frank74 Nybegynder
28. juni 2007 - 13:47 #17
Jeg har lige været inde i databasen og kigge. Der står altså "http"...
Avatar billede hnteknik Novice
28. juni 2007 - 14:00 #18
Hvis den fanger, når du skriver http og ikke i det andet tilfælde er det nok fordi spammeren skjuler teksten på en eller anden måde.

Det kan jo være, at dit
InsertAp(Request.Form("Body"))

gør noget ved koden, så 'læses' rigtig.

Du skulle nok tilføje minimum script escape og % til din liste.
Jeg bør nok snart lave scriptet om så det læser fra en array, som man blot tilføjer tekst til ect. fra en db.

Så ændr koden til

strKommentar= InsertAp(Request.Form("Body"))
Avatar billede frank74 Nybegynder
28. juni 2007 - 14:22 #19
Så har jeg lavet den ændring og tilføjet de ekstra ord. Så må vi se om det hjælper. Jeg krydser i hvert fald fingre. :-)
PS. Siger du lige til når du har lavet scriptet om så det læser fra en DB?? ;-)
Avatar billede hnteknik Novice
28. juni 2007 - 14:39 #20
Jo - jeg skal nok annoncere det, men når vi har kredset de mest bruge ord ind falder det hele til ro. Jeg har en db 2 som samler skramlet op og det ser ud til at tingene dør ud, når de opdager, at man fanger skidtet - det er også et bevis på, at det nok ikke er robotter men mennesker som udfylder disse spam meddelelser.
Men helt undgå kan man nok ikke.
Avatar billede frank74 Nybegynder
29. juni 2007 - 07:59 #21
Nope... Det virker stadig ikke...
Jeg har oprettet et nyt spørgsmål her: http://www.eksperten.dk/spm/785515
Avatar billede hnteknik Novice
29. juni 2007 - 09:23 #22
Du må have sat koden lidt anderledes ind, for jeg fanger alsken skidt.
Se f.eks. hvad jeg fanger her - på også at klikke på IP adressen:

http://www.web4it.dk/hackerslist.asp
Avatar billede hnteknik Novice
29. juni 2007 - 09:31 #23
Og selve gæstebogen er clean as a ...

http://www.web4it.dk/guestbook.asp
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
Kurser inden for grundlæggende programmering

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

Seneste spørgsmål Seneste aktivitet
I dag 16:10 Tomt felt i Start Af ErikHg i Windows
I går 23:00 Hyperlink til tekst Af Nanarsi i Excel
18/0121:03 Forlænge ringetid Af 1Dorte i Apps til Android
17/0117:38 Video ikoner Af Malm i Windows
17/0117:27 Video ikoner Af logbuilders i Windows