Indlæs andet indhold på denne side:
Ud over den generelle metode kan det være et effektivt værn at lægge en inputfelt ind i formularen - et felt, der ikke må skrives i:
<span class="ikkese">
<label for="t22">Message: </label>
<textarea id="t22" name="message" rows="2" cols="30"></textarea>
</span>
Der er så i css lavet en definition for klassen .ikkese:
.ikkese {
display: none;
}
Det bevirker, at levende brugere - som ser formularen i en browser - ikke får vist feltet og derfor ikke skriver i feltet. Men spambotterne forstår (endnu) ikke css, så de ser feltet og skriver i det.
Tricket er så, at man ved valideringen af input fra formularen - javascript, asp eller php - tjekker, at det "forbudte" felt er tomt. Er feltet ikke tomt, er mailen fra en spambot og mailen bliver blokeret.
Læg så koden herunder højt i det asp-script, der modtager og behandler data fra formuleren.
Message = upload.Form("message")
If Not Len(message) = 0 Then
' Der er blevet skrevet i "message", bloker indlægget
Response.Redirect "blokeret.php"
End If
Koden forudsætter, at det forbudte felt har fået name="message" (ingen andre felter i formularen må så have det navn!) og blokerer for videre behandling, hvis det felt ikke er tomt. I stedet sendes videre til en fejlside, her kaldet blokeret.php.
Du skal så naturligvis lave en side blokeret.php, hvor du skriver en ikke alt for oplysende fejlmeddelelse om, at noget gik galt.
Du kan eventuelt i stedet kalde siden afsendt.html og på siden skrive, at mailen er afsendt. Det vil ikke genere almindelige brugere, for de får af gode grunde ikke den side at se. Du skal så bare huske tilsvarende at rette henvisningen, så den rigtige side bliver sendt.
Selv om du laver en sådan blokering, er det desværre ikke det samme som 100% sikkerhed mod spam.
Metoden med det skjulte felt beskytter dig mod at få tilsendt en masse spam, da din mailformular ikke længere umiddelbart lader spambotterne fylde felterne ud og sende. Men der er stadig et par sikkerhedsmomenter, man skal være opmærksom på:
Tegnet @ har ikke noget logisk ærinde i feltet for brugernavn. Forekomst af 'linjeskift' eller 'vognretur' tyder på, at det er en forud skrevet længere tekst, der er blevet kopieret ind - 'linjeskift' eller 'vognretur' har ikke noget naturligt ærinde i de tre felter.
1) 'linjeskift' og 'vognretur' er tilsammen hvad der svarer til at trykke tastaturets [Enter] i en editor: Der hoppes ned på en ny linje og begyndes fra venstre side. Ved 'linjeskift' alene fortsættes (i teorien) på ny linje fra markørens position fra venstre før linjeskiftet.