webForumDet fria alternativet

Gästbok spam

ASP

12 svar · 1 000 visningar · startad av Zaiman

Medlem sedan dec. 20014 239 inlägg
Frågan#1

Börjar här i under .ASP

Har en sida som har en gästbok.
Problemet är att det ibland dyker upp en tom post i databasen. Inte ofta men ibland.

Den sida som formuläret ligger på finns det ingen CAPTCHA kontroll men ett javascript som kollar att fält är ifyllda innan den skickar vidare. Scriptet kollar även att en epost adress finns annars plippar den dit en punkt. Det är ju ingen direkt säkerhet det är jag medveten om.

Den .asp sida som matar in i databasen kontrollerar att det finns data i ett av fälten. Jag kontrollerar även från vilken ipadress som användaren kommer ifrån samt tidpunkt. Den informationen finns inte heller med. Har provat att bara surfa in till inmatningssidan utan att gå via formuläret. Det kommer alltså inte in någon post i db då.

Det är ju uppenbart att jag missar något eftersom det kommer in en tom post ibland. Men vad?

Någon som har varit med om liknande? Just nu känns det inte som om en captcha kontroll skulle hjälpa. (Dessutom är en ny version av sidan under utveckling där captcha ska vara implementerat)

Vill tills vidare föra en diskussion utan kod och bara komma fram till vad som ska kollas upp.

Databasen ligger på MySQL.

Medlem sedan sep. 2005100 inlägg
#2

Jag hade stora problem med spam och captcha fungerade inte för mig riktigt, däremot en ruta med "Vad är 5 plus 5?" och så måste man ange 10 för att det skall fungera.
Stoppade spammen helt i min gästbok...

Medlem sedan juni 20019 519 inlägg
#3

http://www.webforum.nu/showthread.php?t=161220 exempel på ovan. har inte direkt haft några problem med spam i gästböcker alls...

Tror OveRRidE gjorde något exempel också som kan fungera:
ha en hidden input med typ namnet email eller något vanligt namn som man normalt har i en gästbok.. om den fylls så vet du om att det måste vara en bot som har gjort det och därför inte lägger du inte in posten.

Ala (alistapart) har så att man måste skriva: "human meddelandet" i deras kontakt formulär.. kan ju också fungera för gästböcker.

Medlem sedan dec. 20014 239 inlägg
#4

Det konstiga är ju att det inte finns någon information alls i något fält, det känns som om databasen "själv" lägger till en tom post. Det ända som ändras är ju räknaren i databasen.

Själva "spammet" är ju tomt.

Medlem sedan juni 20019 519 inlägg
#5

Hur gör du kontroller imot din gästbok: javascript för att kontrollera längden eller ske det Serverside också.. om du inte gör det på server sidan och personer har stängt av JS så kan dom postar tomma inlägg..

Medlem sedan dec. 20014 239 inlägg
#6

Det är även på serverside.
Kontrollerar om meddelande fältet är tomt.

if Request.Form("message") <> "" then
'skriv in i db
else
' skriv ut felmess
end if
Medlem sedan juni 20019 519 inlägg
#7

" " är ju större än "" ...

Trim(Request.Form("message")) <> ""
Medlem sedan dec. 20014 239 inlägg
#8

Helt riktigt att " " är större än "" :)
Men borde då inte posten i db innehålla " " åtminstone?

Medlem sedan juli 20003 825 inlägg
#9

Jag kom på ett bra sätt igår, faktisk, som jag ska implementera på alla mina webbplatser. Det går kort till på att man skapar en bild med session ID, som sen kollas och data skrivs i DB om det är samma.

Skapa mappen under roten:

/imgpwd/

Kod för bild: (på gästbokssidan, då.)

<IMG SRC="/imgpwd/imgpwd-code.asp" ALT="Hemlig Nyckel" />

***
Koden i filen: /imgpwd/imgpwd-code.asp

<%
' ## MANIPULATE THE IMAGE
' ## DOCUNENTATION FOUND AT http://www.aspjpeg.com/manual.html

' ## RESAMPLE IMG
Dim Jpeg
Set Jpeg = Server.CreateObject("Persits.Jpeg")

' ## OPEN & EDIT LARGER IMAGE

Path = Server.MapPath("/imgpwd/imgpwd.jpg")
Jpeg.Open Path

' ## DRAW TEXT

' Jpeg.Canvas.Font.Color = &862323 ' vinröd
Jpeg.Canvas.Font.Color = &000000 ' svart
Jpeg.Canvas.Font.Family = "Verdana"
Jpeg.Canvas.Font.Size = 35
' Jpeg.Canvas.Font.Bold = True
Jpeg.Canvas.Font.Quality = 3 ' Antialiased
Jpeg.Canvas.Font.BkMode = "Transparent" ' to make antialiasing work

' Jpeg.Canvas.Print 30, 20, request("pwd")
Jpeg.Canvas.Print 10, 4, RIGHT(session.sessionID(),5)
Jpeg.SendBinary
%>

***

Sen kollar du bara detta innan du skriver i databasen:

IF request("dbaction") = "insert" AND request("strAntiSpam") = RIGHT(session.sessionID(),5) THEN
SQL = "INSERT INTO [" & myTable & "] " _
...

***
Klart!!

Jag bifogar filen "imgpwd.jpg" nedan. Du kan givetvis göra som du vill. Detta är ETT sätt att lösa detta problemet på. Det finns säkert lika många sätt som det finns webbprogrammerare... För min egen del känner jag att DET MINST JOBBIGA sättet är det bästa sättet. Det är även trevligt om det går att kopiera/klistra in på ett stort antal webbplatser, och det går med denna varianten utan överdrivet mycket PUL.

imgpwd.jpg
Medlem sedan juli 20003 825 inlägg
#10

imgpwd

Jag har nu gjort i ordning en lite zip-fil med exempel på kod, bara att kopiera rakt in i ett befintligt projekt.

Bara lägg mappen rakt under rooten på din webbplats och studera koden.

Typ så här:
http://www.russia.se/imgpwd/

En gammal version av winzip finns på många ställen, till exempel här:
http://www.brothersoft.com/downloads/winzip-6.html

Medlem sedan dec. 20014 239 inlägg
#11

Zaiman skrev:

Helt riktigt att " " är större än "" :)
Men borde då inte posten i db innehålla " " åtminstone?

Frågan kvarstår :)
Visst borde då posten innehålla " " ?

Medlem sedan nov. 2002830 inlägg
#12

Jo, men är den verkligen helt tom då? Tillåter du i databasen NULL-object?
Om du sätter not null (tillåt inte nollvärden) i dbn så är det möjligt att det hämmar problemet...

Medlem sedan dec. 20014 239 inlägg
#13

Sasch skrev:

Jo, men är den verkligen helt tom då? Tillåter du i databasen NULL-object?
Om du sätter not null (tillåt inte nollvärden) i dbn så är det möjligt att det hämmar problemet...

Naturligtvis.. Börjar där och ser om det slutar. Borde jag ha tänkt på.

267 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)