WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Gästbok (https://www.wn.se/forum/showthread.php?t=36721)

robinb0bin 2009-05-09 02:26

Hej,

Våran gästbok har råkat ut för en spambot. Jag försökte använda detta för att banna hans ip:

<%
Dim sBlockedIP
sBlockedIP = Request.ServerVariables("REMOTE_ADDR")
'check if the IP is the one that is blocked
If sBlockedIP = "78.46.66.178" Then
'if IP address is banned then redirect to no_access.asp
Response.Redirect "no_access.asp"
End If
%>

Det fungerade inte så bra och han kom in igen å körde på som aldrig förr, viagra etc etc.

Jag skulle behöva hjälp av nån som kan förklara lite lätt hur jag fixar en checkbox, typ verifieringsbox till gästboken, så man måste bocka i den innan man kan skicka iväg ett meddelande. Behöver absolut inte vara nått avancerat, bara en checkbox. Är riktigt kass på kodning, inte jag som gjort sidan och han som gjort den svarar aldrig, så om nån orkar förklara hur jag "kopplar ihop" checkboxen med själva scriptet. Förstår ni? :D

Tack på förhand!

CotopaXi 2009-05-09 03:12

på formulärsidan

...
...

<input type="checkbox" name="checkboxen" value="human" />

...
...


på sidan du sparar inlägget med

if request.form("checkboxen") <> "human" then
response.redirect "no_access.asp"
else
....
...
...
end if

hör av dig om du behöver mera hjälp.

robinb0bin 2009-05-09 03:42

Själva formulärsidan och sidan jag sparar inlägget på är detsamma? Så nu när jag lagt in det där, så kommer jag direkt till no_access.asp-filen. Vad kan det bero på?

Plockar lite av koden av gästboken och pastar här (Fetmarkerade är din kod jag la in):

<tr>
<td><input type="checkbox" name="checkboxen" value="dude" /></td>
</tr>
<tr>
<td> Hemsida:

<input name="Hemsida" size="60" style="font-family:trebuchet ms, verdana;font-size:9px;border:#000000 solid 1px;background-color:#d5d6d5;;">
</td>
</tr>
<tr>
<td class="guess"> Inlägg:
<textarea name="Inlagg" cols="80" rows="5" style="font-family:trebuchet ms, verdana;font-size:9px;border:#000000 solid 1px;background-color:#d5d6d5;;" ></textarea>

</td>
</tr>
<tr>
<td>
<input type="submit" value="Skicka" name="B1" style="font-family:trebuchet ms, verdana;font-size:9px;width: 110;border:#000000 solid 1px;color:#666666; background-color:#d5d6d5;">
</td>
</tr>
</form>
</table>
<%
'Lägger till posterna
If Request.Querystring("visa") = "spara" AND len(Request.Form("Inlagg")) > 0 then
%>
<%
strNamn = SafeSQL(Request.Form("Namn"))
strEpost = SafeSQL(Request.Form("Epost"))
strHemsida = SafeSQL(Request.Form("Hemsida"))
strDatum = now()
strInlagg = SafeSQL(Request.Form("Inlagg"))
strIP = Request.ServerVariables("REMOTE_ADDR")

If Len(strHemsida) > 0 AND Instr(strHemsida,"http://") = 0 then
strHemsida = "http://" & strHemsida
End If
%>
<%

If InStr(strInlagg, "<a href") Then
Response.Redirect("67.asp")
Elseif InStr(strInlagg, "[url") Then
Response.Redirect("67.asp")
Elseif InStr(strInlagg, "[URL") Then
Response.Redirect("67.asp")
Elseif InStr(strInlagg, "http://") Then
Response.Redirect("67.asp")
Else
objConn.Execute("INSERT INTO gastbok(Namn,Epost,Hemsida,Datum,Inlagg,IP) VALUES('" & strNamn & "','" & strEpost & "','" & strHemsida & "','" & strDatum & "','" & strInlagg & "','" & strIP & "')")
Response.Redirect strSidnamn
End If
%>
<%
End If

' Stänger och förstör alla objekt
objRS.Close : Set objRS = nothing
objConn.Close : Set objConn = nothing
%>
<%
if request.form("checkboxen") <> "dude" then
response.redirect "no_access.asp"
else

end if
%>

CotopaXi 2009-05-09 04:07

Kod:

<tr>
<td><input type="checkbox" name="checkboxen" value="dude" /></td>
</tr>
<tr>
<td> Hemsida:<br>
<input name="Hemsida" size="60" style="font-family:trebuchet ms, verdana;font-size:9px;border:#000000 solid 1px;background-color:#d5d6d5;;">
</td>
</tr>
<tr>
<td class="guess"> Inlägg:<br><textarea name="Inlagg" cols="80" rows="5" style="font-family:trebuchet ms, verdana;font-size:9px;border:#000000 solid 1px;background-color:#d5d6d5;;" ></textarea>

</td>
</tr>
<tr>
<td>
<input type="submit" value="Skicka" name="B1" style="font-family:trebuchet ms, verdana;font-size:9px;width: 110;border:#000000 solid 1px;color:#666666; background-color:#d5d6d5;">
</td>
</tr>
</form>
</table>
<%
'Lägger till posterna
If Request.Querystring("visa") = "spara" AND len(Request.Form("Inlagg")) > 0 then


'Anti-Spam Check
if request.form("checkboxen") <> "dude" then
response.redirect "no_access.asp"
end if


strNamn = SafeSQL(Request.Form("Namn"))
strEpost = SafeSQL(Request.Form("Epost"))
strHemsida = SafeSQL(Request.Form("Hemsida"))
strDatum = now()
strInlagg = SafeSQL(Request.Form("Inlagg"))
strIP = Request.ServerVariables("REMOTE_ADDR")

If Len(strHemsida) > 0 AND Instr(strHemsida,"http://") = 0 then
strHemsida = "http://" & strHemsida
End If

If InStr(strInlagg, "<a href") Then
Response.Redirect("67.asp")
Elseif InStr(strInlagg, "[url") Then
Response.Redirect("67.asp")
Elseif InStr(strInlagg, "[URL") Then
Response.Redirect("67.asp")
Elseif InStr(strInlagg, "http://") Then
Response.Redirect("67.asp")
Else
objConn.Execute("INSERT INTO gastbok(Namn,Epost,Hemsida,Datum,Inlagg,IP) VALUES('" & strNamn & "','" & strEpost & "','" & strHemsida & "','" & strDatum & "','" & strInlagg & "','" & strIP & "')")
Response.Redirect strSidnamn
End If
End If

' Stänger och förstör alla objekt
objRS.Close : Set objRS = nothing
objConn.Close : Set objConn = nothing
%>


robinb0bin 2009-05-09 04:28

TAAACK som f*n för hjälpen!

WeaZear 2009-05-09 12:19

En checkbox lär inte hjälpa så mycket, fixa en captch image istället. Har du ASPJpeg på servern?

Jimpsson 2009-05-09 12:31

http://www.captcha.net/
Där har du en helt okej captcha som är rätt enkel att integrera.

http://akismet.com/
Är ett API du kan använda och jag tror det funkar så att du skickar inlägget till deras server och så får du svar om det klassas som spam eller inte.

tartareandesire 2009-05-09 14:12

Citat:

Originally posted by WeaZear@May 9 2009, 12:19
En checkbox lär inte hjälpa så mycket, fixa en captch image istället. Har du ASPJpeg på servern?

Tror det kan hjälpa lite grann, allting som försvårar tar bort åtminstone en del bottar. Annars funkar en simpel fråga bra också.

taz76 2009-05-09 18:00

Jag har sett en sorts captcha på en del sidor där man får svara på en liten mattefråga.. som t.ex 4+2 :P

crazzy 2009-05-09 18:39

På nån mindre sida jag gjorde om för ett tag sedan körde jag med: "Tredje sista bokstaven i svenska alfabetet?". Är ju bara vi som har det tecknet så alla bottar försvann. :)

martine 2009-05-09 21:16

Annars kommer man rätt långt med bara en lista på förbjudna ord som man skannar meddelandet med. Liknande lösningar är det jag föredrar.

kw_wasabi 2009-05-10 01:16

Jag har använt mig av en checkbox som användaren ska kryssa i för att bevisa att han/hon är människa. På senare tid har jag dock märkt att spambotar börjat "förstå" sig på detta och kommit igenom spärren. Nuu har jag börjat med en bild med text på.

Bilden byts dock aldrig ut, utan den text som står där är det value på input:en som krävs för att köra inmatningen till databasen.

<%
correctcode = "eFnn5" 'Den text som står på bilden
input_spam = Request.Form("antispam")

If input_spam = correctcode Then
...
...
...
Else
Response.Redirect formularsidan
End If
%>

jonny 2009-05-10 16:44

Jag har kört en mattefråga som aldrig ändras och ingen bot har klarat av den ännu efter minst ett halvår.

cortex 2009-05-10 17:41

En ordentlig captcha är att föredra i alla lägen, uppdatering av formulär, gästböcker, kontaktformulär osv...

Och en Captcha skall alltid för att vara ordentligt säker, innehålla a-ö 1-9 i alla dess olika kombinationer varje gång en användare skall posta någonting eller liknande, dessutom så skall det vara lite svårläst men ändå så att man precis kan läsa det, för det finns botar som läser av bilder också så länge dom är väldigt lättlästa..

martine 2009-05-10 20:33

Citat:

Ursprungligen postat av cortex
En ordentlig captcha är att föredra i alla lägen, uppdatering av formulär, gästböcker, kontaktformulär osv...

För utvecklarens skull kanske ja, men knappast inte för besökarens.

Citat:

Ursprungligen postat av cortex
Och en Captcha skall alltid för att vara ordentligt säker, innehålla a-ö 1-9 i alla dess olika kombinationer varje gång en användare skall posta någonting eller liknande, dessutom så skall det vara lite svårläst men ändå så att man precis kan läsa det, för det finns botar som läser av bilder också så länge dom är väldigt lättlästa..

Tester har visat att datorer är bättre på att "läsa rätt" än människor - så det är nog bara en tidsfråga innan vi får bottar som tar sig igenom även detta hinder. Ju mer tillkrånglade de blir med olika tecken, bokstäver med prickar eller ringar, tvetydigheter som l, 1 och I desto "jobbigare" och tråkigare blir också sajten för besökarna.

Så länge man inte har en stor sajt som blir ett specifikt mål som bottarna riktar sig mot så är individuella lösningar oftast mycket effektiva enligt min erfarenhet. Så att säga att det alltid vore rätt med captcha håller jag inte med om.

Ett annat tips är att inte använda uppenbara name-attribut, t.ex. email för epost utan använda just t.ex. epost eller något ännu mer kryptiskt för att robotarna inte automatiskt ska veta vad som ska användas - får du sedan något helt annat än en epostadress i det fältet så är sannolikheten stor att det handlar om en bot.

BjörnJ 2009-05-10 22:44

Jag håller med om att det är bättre att det är något som är så enkelt som möjligt för användarna, i alla fall så länge man inte har stora problem med spam. Någon enkel fråga som är lätt för människor att besvara, men svårt för en bot som inte anstränger sig extra för att posta i just ditt formulär. Kan vara något i still med "Vilken färg har en brandbil?", "Vad blir två plus två?", "Hur många fingrar har de flesta på en hand?", "Vad heter Sveriges huvudstad?". Tänk på att kolla svaret case-insensitve.

Tänk också på att captcha i form av bilder kan bli problem för synskadade. Man skulle även kunna spela upp något ljud (kanske läsa upp en fråga eller säga något ord man ska skriva), men det blir istället problem för hörselskadade, så det skulle kunna vara som ett alternativ till dem som inte klarar bilden.

FredrikNas 2009-05-10 23:16

jag tycker att re-captchas produkter är otroligt bra, lätt att läsa och blockerar bra.

WeaZear 2009-05-11 12:10

Citat:

Ursprungligen postat av martine
Citat:

Originally posted by -cortex@May 10 2009, 17:41
En ordentlig captcha är att föredra i alla lägen, uppdatering av formulär, gästböcker, kontaktformulär osv...


För utvecklarens skull kanske ja, men knappast inte för besökarens.

Citat:

Ursprungligen postat av cortex
Och en Captcha skall alltid för att vara ordentligt säker, innehålla a-ö 1-9 i alla dess olika kombinationer varje gång en användare skall posta någonting eller liknande, dessutom så skall det vara lite svårläst men ändå så att man precis kan läsa det, för det finns botar som läser av bilder också så länge dom är väldigt lättlästa..

Tester har visat att datorer är bättre på att "läsa rätt" än människor - så det är nog bara en tidsfråga innan vi får bottar som tar sig igenom även detta hinder. Ju mer tillkrånglade de blir med olika tecken, bokstäver med prickar eller ringar, tvetydigheter som l, 1 och I desto "jobbigare" och tråkigare blir också sajten för besökarna.

Så länge man inte har en stor sajt som blir ett specifikt mål som bottarna riktar sig mot så är individuella lösningar oftast mycket effektiva enligt min erfarenhet. Så att säga att det alltid vore rätt med captcha håller jag inte med om.

Ett annat tips är att inte använda uppenbara name-attribut, t.ex. email för epost utan använda just t.ex. epost eller något ännu mer kryptiskt för att robotarna inte automatiskt ska veta vad som ska användas - får du sedan något helt annat än en epostadress i det fältet så är sannolikheten stor att det handlar om en bot.

Går ju alltid att ha typ 10 olika captcha bilder

Aerpe 2009-05-11 14:09

Eller som jag brukar rekommendera.

Akismet.com

Med vänlig hälsning
Aerpe

kw_wasabi 2009-05-14 19:52

Citat:

Originally posted by Aerpe@May 11 2009, 14:09
Eller som jag brukar rekommendera.

Akismet.com

Akismet har funkat extremt bra på min blogg, ingen spam har kommit förbi och ingen oskyldig kommentar har filtrerats bort.

emilv 2009-05-14 22:44

Allt snack om captcha hit och frågor dit ger jag inte mycket för.
Det ska vara så enkelt för användaren som möjligt.

På Levonline har vi ett kontaktformulär där det givetvis kom in mycket spam. Jag bytte namn på input-fälten så att det där användaren ska fylla i sitt namn nu heter "email" i koden och så gav jag ett helt orelaterat namn till e-postfältet. Om någon skriver in @ i fältet "email" så räknas det som en bot och vi stoppar formuläret med ett meddelande om att man inte får skriva @ i sitt namn. Helt osynligt för användaren och extremt enkelt att implementera.

Onkelborg 2009-05-16 15:46

En väldigt enkel lösning är att ställa en enkel mattefråga som användaren får svara på. Sedan lägger man dit ett javascript som räknar ut rätt svar på mattefrågan och skriver dit svaret självt, samt döljer hela frågan. Användare som har javascript märker ingenting, de som inte har javascript får svara på frågan. Botar tolkar i regel inte javascript så de fastnar..

(Frågan i sig kan vara konstant om man nu vill det)

kw_wasabi 2009-05-16 17:18

Citat:

Originally posted by emilv@May 14 2009, 22:44
Allt snack om captcha hit och frågor dit ger jag inte mycket för.
Det ska vara så enkelt för användaren som möjligt.

På Levonline har vi ett kontaktformulär där det givetvis kom in mycket spam. Jag bytte namn på input-fälten så att det där användaren ska fylla i sitt namn nu heter "email" i koden och så gav jag ett helt orelaterat namn till e-postfältet. Om någon skriver in @ i fältet "email" så räknas det som en bot och vi stoppar formuläret med ett meddelande om att man inte får skriva @ i sitt namn. Helt osynligt för användaren och extremt enkelt att implementera.

Jäkligt bra lösning måste jag säga. Kommer det inte igenom något alls? Jag håller helt med dig att det ska vara enkelt för användaren, är själv verkligen trött på alla captcha överallt som blir svårare och svårare att tyda. Nu för tiden är det inte ovanligt att jag måste försöka flera ggr om jag har otur och får en nästan oläslig captcha.

Det visar att det finns sätt att stoppa spambotar som även är bra för användarna. Ge felmeddelanden som:
"Ditt namn får enbart bestå av A-Ö"
"Du måste ange både för och efternamn"
"Din E-postadress är inte giltig"
...etc

emilv 2009-05-19 07:26

Citat:

Ursprungligen postat av kw_wasabi
Citat:

Ursprungligen postat av emilv
Allt snack om captcha hit och frågor dit ger jag inte mycket för.
Det ska vara så enkelt för användaren som möjligt.
På Levonline har vi ett kontaktformulär där det givetvis kom in mycket spam. Jag bytte namn på input-fälten så att det där användaren ska fylla i sitt namn nu heter email i koden och så gav jag ett helt orelaterat namn till e-postfältet. Om någon skriver in @ i fältet email så räknas det som en bot och vi stoppar formuläret med ett meddelande om att man inte får skriva @ i sitt namn. Helt osynligt för användaren och extremt enkelt att implementera.

Jäkligt bra lösning måste jag säga. Kommer det inte igenom något alls?

Det har funkat bra såvitt jag vet. Jag är dock inte första instans att läsa i supportlådan så jag vet inte om det är hundraprocentigt. Kanske skulle lägga in en logg eller något åt mig själv...

WoxAnYv 2009-05-19 07:47

Själv brukar jag köra med varianten att ha ett fält som heter email men är av typen hidden. Finns det något innehåll i det fältet så sparas inte inlägget. Jag visar inget felmeddelande heller i det läget då det är onödigt. Har fungerat bra hittils.

MikaelS 2009-07-09 10:55

Citat:

Originally posted by WoxAnYv@May 19 2009, 06:47
Själv brukar jag köra med varianten att ha ett fält som heter email men är av typen hidden. Finns det något innehåll i det fältet så sparas inte inlägget. Jag visar inget felmeddelande heller i det läget då det är onödigt. Har fungerat bra hittils.

Om inte bot:sen använder JS, hur får de dit informationen i fälten, eller postar de direkt till målsidan från ett eget form?

WoxAnYv 2009-07-09 13:03

Citat:

Ursprungligen postat av MikaelS
Citat:

Ursprungligen postat av WoxAnYv
Själv brukar jag köra med varianten att ha ett fält som heter email men är av typen hidden. Finns det något innehåll i det fältet så sparas inte inlägget. Jag visar inget felmeddelande heller i det läget då det är onödigt. Har fungerat bra hittils.


Om inte bot:sen använder JS, hur får de dit informationen i fälten, eller postar de direkt till målsidan från ett eget form?

Det går alldeles ypperligt att komma åt fält av typen hidden med hjälp av javascript, så även där är det ju helt i sin ordning. Det enda vore väl det att spamrobotarna skulle validera att det inte är fält av typen hidden då förstås. Men ja, hittils har det fungerat prima.

I övrigt tror jag att majoriteten av spamrobotar kör med wget eller liknande och postar direkt mot sidorna, det är iaf vad jag misstänker. Någon som har insikt i hur dessa spamrobotar fungerar och vågar berätta om det?

KarlRoos 2009-07-09 13:13

Citat:

Ursprungligen postat av kw_wasabi
Citat:

Ursprungligen postat av Aerpe
Eller som jag brukar rekommendera.
Akismet.com

Akismet har funkat extremt bra på min blogg, ingen spam har kommit förbi och ingen oskyldig kommentar har filtrerats bort.

+1 där, Akismet är otroligt!
Enkelt API också så borde inte vara så svårt att porta till ASP.


Alla tider är GMT +2. Klockan är nu 12:08.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson