Hur du hindrar spam på din webbplats

Robot

Spam är tyvärr en vardag för många webbplatser, och allra mest utsätts de sajter som får mycket uppmärksamhet. En webbplats som innehåller spam avskräcker inte bara besökarna, utan får dessutom negativa konsekvenser i sökmotorer; ifall besökare inte gillar något så gör inte heller sökmotorer det.

Att manuellt sitta och radera spam är tidskrävande och ingen hållbar lösning. I den här artikeln berättar jag hur du slår undan benen för spammare automatiskt.

Vad är spam?

År 1970 sändes en sketch från den brittiska humorserien Monty Pythons flygande cirkus. Sketchen handlar om två kunder som försöker beställa frukost, men i stort sett allt på menyn innehåller spam (en sorts köttkonserv), och en av kunderna i fråga vill absolut inte ha just spam. När internet blev stort började ordet även att användas i webbsammanhang med liknande innebörd.

Kort sagt är spam (eller skräppost) oönskad reklam som antingen mejlas ut eller läggs i kommentarer på bloggar och andra webbplatser. Ungefär 62% av alla mejl som skickas är spam, där spammarnas huvudsyfte att få folk att köpa en vara eller tjänst. På webbplatser är syftet att få så många länkar till en sajt som möjligt och på så vis få en högre placering i sökmotorer.

Spammare använder sig oftast av en spambot — ett datorprogram som fungerar som en robot genom att automatiskt lägger ut önskat meddelande på sajter — men i enstaka fall är det personer som sprider spammen manuellt. Det är just spambotarna jag kommer fokusera på i den här artikeln.

Hur fungerar en spambot?

Spindel

Spambotar fungerar ungefär som Google’s spindlar; via länkar kravlar de sig fram från sida till sida för att luska fram information. Genom att leta efter textsträngar som matchar ”något@något.något” är det till exempel väldigt enkelt för spambotar att hitta e-postadresser som de kan spara ner och använda, eller sälja vidare till andra likasinnade. Ifall du har din e-postadress angiven i klartext på din webbplats har du med stor sannolikhet blivit utsatt minst en gång.

Det många spambotar även gör är att leta efter formulär att fylla i och sedan skicka iväg, vanligtvis kontaktformulär och kommentarsfält. Det är främst dessa vi vill undvika.

Hur skyddar man sig från spam?

Det finns flera sätt att skydda sig från spam, och jag kommer gå igenom tre av de bästa.

Captcha: Lösningen som fungerar för bra

Captcha

Captcha står för ”Completely Automated Public Turing-test to tell Computers and Humans Apart”, alltså ”Helt automatiskt Turingtest för att skilja på datorer och människor”, där ”turingtest” är ett test för att just kunna skilja på datorer och människor. Du har nästan garanterat stött på ett sådant test på internet, där du ska skriva av olika tecken som presenteras på en bild, alternativt svara på något enkelt som ”Vad är 7 + 3?”.

Dessa tester fungerar väldigt bra. Sanningen är att de faktiskt fungerar för bra, då det inte bara är spambotar som misslyckades med att skriva av tecknen bland alla konstiga krumelurer, utan även människor. I en undersökning av Stanford University visade det sig att ifall tre personer fick svara på samma Captcha, var det endast 71% av fallen då de stämde överens med varandra.

Även Moz gjorde en undersökning som visade på att sajter med Captcha förlorar i snitt 3,2% av sina kundkonverteringar.

Captcha är ett exempel på att tvinga en kund hantera ett tekniskt problem — en stor möda för något som inte gynnar kunden själv. Trots att det är ett effektivt spamskydd bör du undvika Captcha så långt det går.

Akismet

Akismet är en tjänst som, väl installerat, granskar information åt dig. När någon fyller i ett formulär på din webbplats skickas informationen till Akismet, där ett hundratal tester körs för att sedan skicka tillbaka ett resultat. Allt sker automatiskt, och jag har personligen aldrig varit med om att något spam tagit sig igenom.

För dig som använder WordPress finns det ett färdigt tillägg att installera.

Honungsburk

Honungsburk

En personlig favorit är den så kallade honungsburken. En honungsburk är — inte helt överraskande — något som ska locka till sig obehöriga. Visst låter det motsägelsefullt, men låt mig förklara.

Som jag berättade tidigare är spambotar datorprogram, och dessa ser bara kod. Detta kan vi utnyttja genom att ha med ett dolt textfält i formuläret som är avsett just för spambotar, därefter kan vi kontrollera värdet i fältet för att avgöra om det är spam eller inte; ifall fältet är tomt var det en människa som skickade formuläret, och ifall fältet inte är tomt så var det en maskin.

Det bästa är att ge honungsburken ett vanligt namn på ett fält som inte används i formuläret. I mitt kontaktformulär har jag exempelvis inget fält för ämne (som annars är ett väldigt vanligt fält i kontaktformulär), därför har jag låtit döpa min honungsburk till just ”ämne”.

Här nedan kommer ett förenklat exempel, där honungsburken är dold med display: none;.

<form method="post">
	<p>
		<label for="name">Namn</label>
		<input id="name" name="name" type="text" />
	</p>
	<p>
		<label for="email">E-postadress</label>
		<input id="email" name="email" type="email" />
	</p>
	<p style="display: hidden;">
		<label for="subject">Ämne</label>
		<input id="subject" name="subject" type="text" />
	</p>
	<p>
		<label for="message">Meddelande</label>
		<textarea id="message" name="message"></textarea>
	</p>
	<p>
		<input type="submit" value="Skicka" />
	</p>
</form>

Jag har aldrig varit med om att någon spam har tagit sig igenom detta heller.

Slutord

Som man brukar säga om inbrottstjuvar så finns det inget sätt att stoppa dem helt och hållet, man kan däremot göra det jobbigare för dem. Med teknikerna jag berättat om i den här artikeln hoppas jag att vi lyckas göra det riktigt jobbigt för spambotar att härja fritt.

Hur hindrar du spam på din webbplats?

Ivar Johansson

Skriven av

Ivar började med webbutveckling för tio år sedan och har sedan dess utvecklat breda kunskaper inom framför allt webbprestanda, sökmotorer och användarupplevelse. Idag driver han eget företag där han skapar webbplatser som är snabba, säkra och enkla att hantera.

  1. Björn

    28 maj, 2014

    Hej Ivar. Jo, jag undrar bara hur informationen om att det fältet ”ämne” är ifyllt hanteras och var. Det kanske är en dum fråga men jag är relativt ny inom CSS så för mig blir det lite krångligt att förstå. Jag tycker att det borde vara ytterligare script som säger att om det inte är ifyllt så ska eposetn skickas och om det är det så inte.

    mvh Björn

  2. Ivar Johansson

    28 maj, 2014

    Hej Björn! Kontrollen av fältet är inget man kan göra med CSS (vilket enbart är design), utan är något man gör med förslagsvis PHP. Var det vad du menade?

Mejla mig: