Varför du inte bör använda CAPTCHA – och alternativen

CAPTCHA står för Completely Automated Public Turing Test to Tell Computers and Humans Apart, och innebär att en bild med text visas, och du som besökare uppmanas att fylla i vad det står i bilden. Det används för att kontrollera att du är en människa och ingen automatiserad spamrobot, exempelvis för att få kommentera artiklar på bloggar. Idén är att människor kan urskilja svårläsliga bokstäver och siffror bättre än ett program. Detta är inte en bra lösning, och i den här artikeln ska jag förklara varför.

Exempel på CAPTCHA

Först och främst är de störande för alla besökare. Om jag vill kommentera en artikel på en blogg vill jag inte fylla i nonsens i en ruta, utan att det ger mig något tillbaka. Spam är blogginnehavarens problem, inte besökarnas! Besvära inte dina besökare bara för att du inte lyckats hitta någon bra lösning på spamproblemet. Det är direkt användarfientligt att lämpa över problemet på användarna – och det finns bättre lösningar!

Dessutom är det inte så effektivt säkert som man kan tro. Det finns ett flertal automatiserade program som knäcker CAPTCHAs med 88-100% tillförlitlighet. Det innebär att spammare kan ta sig igenom skyddet i stort sett när de vill. För att motverka detta görs texterna mer och mer oläsliga, med lägre kontrast, vridna bokstäver, störande streck och punkter och så vidare. Jag har själv ibland väldigt svårt att tyda vad det egentligen står i rutorna. På grund av alla CAPTCHAs har spammare också anlitat billig arbetskraft för att skriva spam-kommentarerna manuellt istället.

CAPTCHA från IIS CAPTCHA från Hotmail CAPTCHA från Slashdot

Naturligtvis är detta svårt eller omöjligt att tyda för personer som är blinda, har nedsatt syn (och i vissa fall nedsatt färgseende). Men även dyslektiker kan ha svårt att klara en CAPTCHA. Det som skulle skilja människor från spamrobotar blir istället en skiljevägg mellan människor med och utan handikapp – och det är direkt diskriminerande.

Vissa implementationer av CAPTCHA är dessutom bristfälliga och går att knäcka utan att tolka själva bilddatat. II-stiftelsens CAPTCHA för att få göra en utökad sökning bland domännamn har jag exempelvis knäckt på ett mycket enkelt sätt. Jag tror jag ska återkomma till det i en senare artikel, jag ska bara reda ut om de kommer polisanmäla mig först. (Jag har aldrig utnyttjat detta ”hack”, men vet hur man skulle kunna kringgå deras kontroll. Det är en skillnad.) Efter mailväxling med IIS har de nu täppt igen ”hålet” som jag upptäckte.

På vissa större webbplatser har man börjat med ljud-CAPTCHAs som komplement till dessa visuella. Då får man ett antal tecken upplästa istället – men det är ännu lättare att knäcka med ett automatiserat program. Därför gör man det svårt att höra bokstäverna, precis som med bilderna. Personal på CNET lyckades inte höra vad Hotmails ljud-CAPTCHA sa, så detta är uppenbarligen ingen bra idé.

Andra röster som kritiserar CAPTCHA:

  • Wall Street Journal: ”The visually impaired have long decried these codes …”
  • World Wide Web Consortium ”CAPTCHA … is unnecessarily damaging to the experience of users with disabilities.”
  • 456 Berea Street: ”Besides having accessibility issues, the use of CAPTCHA in my opinion suffers from usability problems and should be avoided.”
  • Six Apart: ”If the only way to comment on your site is by solving an image-based CAPTCHA, you have a serious accessibility problem.”
  • CNET News.com: ”It seems that they have jumped on a technological idea without thinking through the consequences for the whole population”
  • Tales from the SharpSide: ”I’m sick of CAPTCHA. It straight-up doesn’t work.”

Alternativa lösningar

Det bästa är att hitta tekniska lösningar som inte ålägger besökaren att göra något extra. I vissa fall kanske det inte är möjligt, och då kan man exempelvis låta besökarna lösa ett logiskt pussel av något slag. Genast har man då gjort det väldigt svårt för grupper med nedsatta kognitiva funktioner, så det är inte mycket bättre. W3C nämner ytterligare några alternativ, och Daniel Lopresti vid Lehigh University tar upp en hel drös alternativ (PDF).

Som sagt är det bäst med icke interaktiva lösningar, som exempelvis ett Bayesiskt spamfilter eller olika heuristiska tekniker för att försöka avgöra om besökaren är en människa eller en robot. Det finns faktiskt framgångsrika tekniker inom båda dessa områden, se exempelvis Akismet och Bad Behavior. Tillsammans kan dessa undanröja i stort sett all spam, och du kan låta besökarna få kommentera utan att behöva sköta din spamkontroll.

Etikettikon Läs fler artiklar om: , , ,

Kommentarikon Kommentarer

  1. Håller med dig att CAPTCHA är något dumt som tyvärr kom som en lösning på spam problemet. Jag brukar själv ha problem med CAPTCHA’n på gmails sida när man glömmer lösenordet. Och den är ganska snäll utan konstiga förvridningar. Spam Karma 2 + Akismet pluginet till Wordpress stoppar det spam jag får.

    Skrivet av Henrik, söndag 6 augusti 2006, 16:45

  2. Ska man inte ha någon sådan där mysig analytisk spambannare kan man ju nöja sig med att skriva en lugn liten småkomplicerad text. Hur många datorer förstår: ”Om du skriver den första bokstaven i det tredje ordet i denna mening klassas du ej som spammare.” Skrivs den rakt upp och ner så måste man specialkoda botten för att lösa den.

    Analys är nog dock bäst.

    Skrivet av Pelle, söndag 13 augusti 2006, 00:24

  3. Den typen av CAPTCHA är mer tillgänglig. Men den lider av samma feltänkande som alla CAPTCHAs, nämligen att tvinga besökaren bevisa något som besökaren redan vet (att han eller hon är en människa!). Jag tycker att det är en fientlig inställning.

    Bloggen antar ju då att alla besökare är spamrobotar tills deras oskuld är bevisad, men en vänligare och trevligare attityd är ju att anta att alla besökare är människor, tills motsatsen är bevisad.

    Skrivet av Christian Davén, söndag 13 augusti 2006, 10:47

  4. Det finns en smart och i nuläget sjukt bra fungerade lösning, nämligen javascript. Botar (speciellt spambotar) tolkar nästan aldrig javascript (inga kända iaf), så om besökaren har javascript (vilket är lätt att verifiera) kan man vara 99% säker på att det är en människa. Sedan om personen inte har javascript kan man visa en captcha som sista utväg, eller varningsmarkera meddelandet i databasen etc.

    Finns en klar lösning som en bekant har gjort på http://www.protectwebform.com/

    Skrivet av Gustaf Dymov, fredag 12 januari 2007, 16:51

  5. Om jag har förstått denna artikel rätt så vill författaren ha något som på ett säkert sätt kan ge alla möjlighet att läsa och posta men stänga ute robotar. Detta ska ske utan att användaren behöver göra något extra.

    Jag har läst artikeln och länkarna med alternativ och hittar bara en lösning i detta material som skulle kunna lösa problemet, och det är spamfilter. Många av de andra lösningarna kräver att användaren gör något eller skulle inte kunna hålla i längden. Men jag kan se två problem även med spamfilter. Det första är att de inte är fullkomliga, poster som kommer från människor skulle kunna ses som spam. Det andra problemet är att spam troligen skulle ändras och se ut som normala inlägg, därigenom skulle resultatet bli mer spam.

    Jag försöker inte säga att CAPTCHA är ett fulländat alternativ. Men rätt använt är det ett bra alternativ. Det är lätt att förstå och även trots att det finns robotar som kan avläsa CAPTCHAs så förhindrar det väldigt mycket spam. För en blogg kan man till exempel tänka sig två alternativ, registrera sig eller posta oregistrerad. När man registrerar sig så kommer en CAPTCHA, och efter det behöver man bara logga in. Om man inte registrerar sig så behövs en CAPTCHA första gången man lägger in ett meddelande, efter det så sparas sessionen i x antal minuter, och inget du gör under denna tiden kräver att du verifieras med en ny CAPTCHA.

    Sist vill jag säga att jag hellre skulle se ett system som inte kräver någon användarinblandning.

    Skrivet av Krister Larsson, onsdag 17 januari 2007, 11:46

  6. Jag insåg nyss att jag skrev en hel del utan att komma till en slutsats. Vad jag ville ha sagt är att det inte finns någon anledning att ersätta CAPTCHA med något som inte kommer hålla i längden. Om en annan teknik kan kringgås så kommer den att göra det, och att ersätta något som trots allt fungerar tillfredsställande bör endast göras om den nya lösningen är bättre.

    Skrivet av Krister Larsson, onsdag 17 januari 2007, 13:51

  7. Bad Behavior, Haha, Kul! jag har själv skrivit flera robotar (snälla, för personer som har givit sitt medgivande) som tar sig förbi den, tyvärr så är den algoritmen osannlikt naiv.

    Men alla spamfilter som förlitar sig på HTTP-headers från klienten är självklart helt värdelösa.

    En robot kan ju utan problem sicka HTTP-headern Accept: text/xml, application/xml, application/xhtml+xml, text/html;q=0.2, text/plain;q=0.8, text/css, */*;q=0.1

    /Micke

    Skrivet av Micke, söndag 4 november 2007, 02:46

  8. Ursäkta att jag förivrade mig där, men att konstruera ett filter ”som inte åligger besökaren att göra något extra” är inte helt enkelt. Vad ska du gå på då? JavaScript, hmm, idag kan i princip dom flesta HTTP-klient-bibliotek emulera alla aspekter av en webbläsare inklusiva förmågan att köra JavaScript.

    Tar man till för strikta regler så stänger man aven ute legitima klienter. Det är förmodligen pga. detta som ”Bad Behavior” m.fl. har fått falla tillbaka till naiva saker som att förlita sig på HTTP-headers som Accept.

    /Micke

    Skrivet av Micke, söndag 4 november 2007, 03:01

  9. Är inte OpenID framtiden för detta problem?

    Skrivet av Andreas, fredag 15 februari 2008, 15:00

  10. Nej, OpenID löser tyvärr inte problemet med spam. Jag skrev lite om detta 2005: OpenID för enkel identifiering på bloggar.

    Skrivet av Christian, tisdag 11 mars 2008, 22:03

Rätt enkelt handlar mest om användbarhet och webbutveckling. Jag som skriver heter Christian Davén.

Läs mer om Rätt enkelt

Etikettikon Etiketter

användbarhet, bloggande, google, gui, javascript, meta, programmering, webben, webbutveckling, wordpressfler etiketter

Medaljikon Flitiga kommentatorer