Min gästbok mörkläggs av oerhört mycket spam per dag, och jag har inga
kunskaper alls inom ASP hur man bygger en kod som skulle kunna förhindra detta.
Finns det kanske några färdiga koder redan som man bara kan lägga in i ens
gästboks-kodfil direkt, utan att behöva använda databasen och mySQL?
För dem har jag tyvärr inte så mycket tillgång till eftersom jag bara hyr utrymme hos en bekant.
Och vilket av dessa skulle ni rekommendera, bildkod-verifiering eller ord-blockering?
Om din sida inte är jättestor kan du ju göra en enkel verifiering bara, som en vanlig spambot inte fattar, exempelvis "första bokstaven på veckodagen måndag" eller något liknande.
Jag har lade in nåt liknande i min blogg sedan det dök upp lite spam här och där, och sedan dess har jag sluppit det. :)
Jo, någonting liknande hade varit bra att ha. Tyvärr vet jag inte heller hur man fixar ett sådant.
Kan du svara på möjligtvis om det går att få tag på en guide till detta, och där man får veta så
var den nya koden skall sättas in?
Tror inte det finns någon guide som beskriver hur man gör, eftersom det är så pass enkelt. Skapa bara ett formulärfält och välj någon lämplig och enkel fråga (den behöver inte bytas ofta) och kolla om besökaren har skrivit in rätt svar innan du sparar ditt gästboksinlägg. Funkar ungefär som vanlig validering.
Tror inte det finns någon guide som beskriver hur man gör, eftersom det är så pass enkelt. Skapa bara ett formulärfält och välj någon lämplig och enkel fråga
Hur ska jag göra då när jag inte ens kan det lilla enkla? :) Men jag har ju
redan faktiskt ett formulärfält där man får skriva in namn, kommentar och
hemsida. Är det inte något sånt du menade?
Danny skrev:
jag har just provat att blocka:
"a href"
Skulle du kunna skriva något exempel på hur din blockerings-kod ser ut,
och var du har placerat den?
jag tror det blir strax ovanför "set objFile", men jag är inge vidare på sånt där heller... såhär ser det ut i min, jag har lagt in det precis innan den ska skriva till databasen:
<%End If
Recset.Close
Set Recset = Nothing
End If
ElseIf Request.QueryString("do") = "add" Then
Namn = Request.Form("namn")
Rubrik = Fixa(Request.Form("rubrik"))
Mail = Request.Form("mail")
Msg = Fixa(Request.Form("msg"))
Ip = Request.Servervariables("REMOTE_ADDR")
Url = Request.Form("url")
If Url <> "" Then
If Left(Url,7) = "http://" Then
Url = Url
Else
Url = "http://" & Url
End If
End If
If (not isSpam(Msg)) And (not isSpam(Rubrik)) Then
If (Namn = Rubrik) And (Url <> "") And (Mail <> "") Then
Else
Conn.Execute("Insert Into gastbok(namn, mail, url, msg,ip, rubrik) Values('"& namn &"','"& mail &"','"& url &"','"& msg &"','"& Ip &"','"& rubrik &"')")
End If
End If
Response.Redirect INC
End If
man måste sätta in en IF-sats som körs då, OM den inte hittar spam DÅ ska den gå vidare med t ex "set objFile"... annars om den hittar spam då ska ingenting hända (iaf inte i min, ingenting händer alls :) )
Jag är inte så bra på sånt här som sagt, kan bara lite Delphi, men ASP och sånt har jag aldrig orkat lära mig... men jag provade skriva ihop nåt, här är en snutt från din kod där, se till att du har lagt in funktionen "isSpam" nånstans också...
Else
If (not isSpam(mess)) Then
Else
set objFile = objFSO.opentextfile(server.mappath("guestbook.gb"), 8, false)
objFile.write(strNamn & vbCrlf)
objFile.write(strEmail & vbCrlf)
objFile.write(strHttp & vbCrlf)
objFile.write(dtmNow & vbCrlf)
objFile.write(strMess & vbCrlf)
objFile.write("***" & vbCrlf)
objFile.close
set objFile = nothing
response.redirect(strReferer)
End If
nån annan kanske vet bättre, vad jag läst så ska t ex en bild med en siffra på och sedan en fråga om vad det är för siffra, det ska visst vara klockrent också, min kod är inte så klockren, har ändrat den flera ggr, men nu verkar det faktiskt fungera ganska bra... förutom om det är såna spam-botar som skriver seriösa grejjer! som senaste i min:
strFelmess = session("felmess")
if strFelmess <> "" then session.abandon
set objFSO = server.createObject("scripting.filesystemobject")
If request.Form("act") = "insert" then
strNamn = request.Form("namn")
strMess = request.Form("mess")
strHttp = request.Form("http")
strEmail = request.Form("email")
strIP = request.ServerVariables("REMOTE_ADDR")
strReferer = request.servervariables("http_referer")
dtmNow = now()
if strHttp = "http://" then strHttp = ""
strReferer = "default.asp?p=guestbook"
if cStr(strNamn) = "" then strNamn = "Anonym"
if len(cStr(strMess)) < 6 then
session("fel") = "You must write at least 5 chars."
Response.redirect(strReferer)
Else
Function IsSpam(meddelande)
Dim objRegExp, words
words = "poker|casino"
Set objRegExp = New RegExp
objRegExp.Pattern=words
IsSpam = objRegExp.Test(meddelande)
Set objRegExp = Nothing
End Function
' Kör en kontroll och se om det finns poker eller Casino, om inte så gör inlägget.
if isSpam(request.form("meddelande")) = false then
If (not isSpam(mess)) Then
Else
set objFile = objFSO.opentextfile(server.mappath("guestbook.gb"), 8, false)
objFile.write(strNamn & vbCrlf)
objFile.write(strEmail & vbCrlf)
objFile.write(strHttp & vbCrlf)
objFile.write(dtmNow & vbCrlf)
objFile.write(strMess & vbCrlf)
objFile.write("***" & vbCrlf)
objFile.close
set objFile = nothing
response.redirect(strReferer)
end if
Else
set objFile = objFSO.opentextfile(server.mappath("guestbook.gb"), 1, false)
arrRows = split(objFile.readAll, "***")
objFile.close
set objFile = nothing
det ser att vara ungefär vad jag menade ja... men du kan ju lägga funktionen längre upp, det finns fler funktioner deklarerade längst upp kanske, lägg den där... inte för det spelar nån roll tror jag... men ändå :)
Jag testade att lägga den som du såg i exemplet, men det funkade inte. Och inte heller längre upp, lade funktionen i varje mellanrum men det funkade ingenstans. Vad kan det bero på tror du?
Så här löser man ert problem ........RUSSIAN STYLE :)
Vardan Kushnir, notorious for sending spam to each and every citizen of Russia who appeared to have an e-mail, was found dead in his Moscow apartment on Sunday, Interfax reported Monday. He died after suffering repeated blows to the head.////