Browsing Tag

spam

webbutveckling

Stoppa kommentarspam utan att förstöra tillgängligheten

Här på bloggen började jag få problem med kommentarspam redan några veckor efter jag startade den. Den första tiden handlade det om enstaka poster i veckan men efter en tid så kunde det ha samlat sig 20-30 nya spamposter över en natt. Något behövde göras.

Några faktorer gör det ganska enkelt för mig att lösa spamproblemet: Jag skriver på svenska medan de flesta spambottar är kalibrerade för engelska, min blogg har så få besökare att den är ett väldigt lågprioriterat mål och jag använder ett egenbyggt bloggverktyg vilket gör att det inte finns några färdiga lösningar för just mitt spamfilter. Eftersom jag ville ha ett filter som skulle fungera ett tag framöver och som jag skulle kunna använda på andra webbplatser försökte jag ändå komma fram till en lösning som skulle vara effektiv även för lite större webbplatser, lätt att använda och inte stänga ute funktionshindrade besökare.

Bildbaserade CAPTCHAs uteslöt jag direkt eftersom de är omöjliga att använda för dem som använder skärmläsare och dessutom ofta svårare för vanliga besökare än spambottar att uttyda. Det går visserligen att lösa tillgänglighetsproblemet genom att komplettera med ljuduppspelning av vad som står i bilden, men det gör hela lösningen ännu mer komplicerad.

En annan vanlig lösning är att kombinera svartlistor, vitlistor, analys av kommentartexten och manuell moderering i olika konstellationer. Fördelen med detta är att skyddet ofta inte märks för besökarna. Nackdelarna är att även vanliga kommentarer kan stoppas och att det ständigt måste underhållas och kalibreras. Denna typ av lösning kan vara praktisk för riktigt stora aktörer (som får så många kommentarer att de kan se mönster eller som kan distribuera spamigenkänningen mellan tusentals individer) men skulle kräva för mycket underhåll för min smak.

Slutligen för valet på en enkel kontroll där besökaren fyller i den siffra som visas med bokstäver. Genom att seeda slumpgeneratorn med ett tidsberoende tal så behöver ingen information om vilken siffra som ska fyllas i skickas med till servern.

Om det skulle behövas är det relativt enkelt att öka komplexiteten:

  • Sifferintervallet kan ökas för att skapa fler möjliga alternativ.
  • Siffrans placering i meningen innan fältet där den ska fyllas i kan ändras genom att skapa flera olika meningar som alterneras. För att detta ska vara meningsfullt måste dock betoningen på siffran tas bort…
  • Komplexiteten i algoritmen som avgör vilken siffra som ska visas kan ökas. Eftersom den är kopplad till en tidsangivelse så är varje algoritm möjlig att gissa för den som ser tillräckligt många exempel.
  • För att öka svårighetsgraden kan systemet relativt lätt anpassas till att kombinera flera olika tal till enkla matteproblem som skrivs ut som text.

Som alla andra spamskydd baserade på någon form av CAPTCHA så fungerar inte skyddet mot manuell knäckning det kräver också att den som lämnar kommentarer förstår svenska hjälpligt. På det stora hela så tror jag dock att lösningen kommer att fungera bra, men det är väl bara att vänta och se.

För den som vill läsa mer om spamskydd och CAPTCHA är Wikipedias artikel som alltid ett bra ställe att börja på. W3C har en grundlig genomgång av tillgänglighetsaspekten och Juicy Studio har en ganska teknisk artikel om hur olika alternativa tekniker skulle kunna fungera.