CAPTCHA

Martin liker ikke CAPTCHA

For ganske nøyaktig et år siden skrev jeg artikkelen Hvorfor CAPTCHA er en dårlig idé. Jeg mener fortsatt at CAPTCHA er en dårlig idé og vil benytte denne artikkelen til å utdype hvorfor.

Hva er CAPTCHA?

CAPTCHA står for «Completely Automated Public Turing test to tell Computers and Humans Apart». En utfyllende beskrivelse av den opprinnelige ideen bak CAPTCHA finner man i Wikipedia. Jeg siterer et modifisert utdrag:

CAPTCHA is a type of challenge-response test used in computing to determine whether the user is human. [...] CAPTCHA involves one computer which asks a user to complete a test.

CAPTCHA blir tradisjonelt sett benyttet som en autentiseringsmekanisme for å sikre at den som fyller ut et webbasert skjema faktisk er et menneske, og ikke en maskin, eksempelvis en spam-robot.

Beskrivelsen har en logisk brist, som må ta skylden for at dagens CAPTCHA-løsninger er så brukerfiendtlige som de er. Må man involvere brukeren feiler nemlig «Completely Automated», ettersom prosessen ikke lenger er fullstendig automatisert, men krever interaksjon med brukeren.

CAPTCHA er således kun fullautomatisert for administratoren som eier nettstedet, men hvem er det egentlig du ønsker å tilfredsstille? Administratoren eller brukeren? Slik CAPTCHA her blir beskrevet er CAPTCHA altså en dårlig idé, når man dytter et problem over på brukeren. Er man glad i sine brukere, og ønsker at de skal returnere til nettstedet, tar man selvfølgelig på seg jobben med å gjøre det så enkelt og brukervennlig som mulig. I den grad omfanget tillater det, bør administratoren ta på seg denne jobben.

Hva kan gå galt?

Fra et brukervennlighetsperspektiv

For utviklere og brukere som har lest om CAPTCHA, er det den mest naturlige løsning i hele verden. Det er til og med en smart måte å løse et komplekst problem på. Imidlertid er det ikke denne brukermassen som utgjør et problem. Brukere som ikke har hørt om CAPTCHA vil ha problemer med å forstå hva som skal utføres og hvorfor de skal gjøre det, og terskelen for å utføre det du ønsker av brukerne høynes dramatisk.

Du som leser denne artikkelen er sannsynligvis oppdatert på teknologi, men det er ikke deg dette dreier seg om. Dette handler om å tilrettelegge brukervennlige løsninger også for mennesker som ikke er teknologisk orienterte, som ikke har et forhold til verken spam eller mekanismer for antispam.

Fra et teknisk perspektiv

I en tradisjonell CAPTCHA-løsning er det flere forutsetninger som må være på plass for å få løsningen til å fungere. Manglende støtte for Informasjonskapsler og bilder er de to vanligste problemene.

En relativt stor mengde brukere aksepterer ikke informasjonskapsler annet enn for egendefinerte nettsteder. Årsaken er at funksjonaliteten rundt informasjonskapsler kan misbrukes, blant annet til såkalte sporingskapsler. Jeg siterer Wikipedias artikkel om sporingskapsler:

Cookies have been of concern for Internet privacy, since they can be used for tracking browsing behavior. [...] Cookies have also been criticised because the identification of users they provide is not always accurate and because they could potentially be used for network attacks.

Jeg skal ikke gå inn i en diskusjon om hvorvidt informasjonskapsler er en god ting eller ei, men ønsker å belyse det faktum at mange velger å ikke akseptere informasjonskapsler nettopp av de årsakene som er sitert over. Selv aksepterer jeg kun informasjonskapsler fra nettsteder jeg manuelt velger selv.

Med dagens mobile enheter er det enkelt å få tilgang til internett over en rask forbindelse. Det er derimot ikke gratis, og brukerne betaler inntil 15,- kroner per overførte megabyte. Enten man surfer via mobilen eller en datamaskin via mobilen, er det mange som velger å deaktivere bilder. En åpenbar konsekvens er naturligvis at bildet som benyttes i tradisjonelle CAPTCHA-løsninger ikke vises, og i verste fall blir fullstendig usynlig for brukeren.

I tillegg benytter svært mange brukere Adblock eller tilsvarende løsninger, som filtrerer uønsket innhold på websider, som reklame og annonser. Jeg har tidligere vært inne på hvilke fatale konsekvenser som følger av feilaktig bruk av bilder til kritiske funksjoner, når filtreringsfunksjoner fjerner bildene.

Manuell hacking

Med CAPTCHA kommer man ikke utenom et annet problem, nemlig manuelle spammere. Selv om mesteparten av all spam i dag er automatisert, finnes det allikevel mennesker som gjør denne jobben manuelt. Dette problemet kommer man riktignok ikke utenom med andre løsninger heller, men med CAPTCHA som eneste forsvarsmekanisme er det en svært triviell jobb å forbigå.

Når man ser tjenester som WhatTheFont, tør jeg påstå at det kun er et spørsmål om tid før også maskiner klarer å knekke dagens CAPTCHA-implementasjoner.

Hvordan CAPTCHA bør fungere

CAPTCHA burde vært spesifisert annerledes. I hvert fall i henhold til innholdet i Wikipedia-artikkelen. Det klare målet bør være nettopp det forkortelsen indikerer, å være en fullautomatisert løsning for å filtrere spam.

Den perfekte CAPTCHA-løsningen er den ingen ser, men allikevel klarer å filtrere vekk uønskede henvendelser. Verken du som bruker eller jeg som administrator skal behøve å forholde meg til CAPTCHA som løsning eller spam som problem.

Selv har jeg ikke funnet den perfekte løsningen. Jeg har ikke en gang sett den i bruk hos andre. Alle løsninger jeg har sett krever interaksjon fra en administrator som tidvis må foreta seg noe i forhold til løsningen.

Jeg har en løsning som følger:

  • Første gang en bruker legger igjen en kommentar puttes kommentaren inn i en godkjenningskø, hvor jeg manuelt må godkjenne kommentaren før den publiseres. Alle påfølgende kommentarer fra denne brukeren vil deretter publiseres direkte, uten at jeg trenger å involvere meg. Unntaket er hvis kommentaren bryter med ett eller flere av følgende punkter.
  • Jeg benytter et ordfilter for å filtrere kommentarer som inneholder ett eller flere ord jeg har spesifisert i ordfilteret. Ideelt sett kunne jeg kuttet ut denne funksjonen, men jeg har valgt å benytte den som andre og siste forsvarslinje. Det hender fra tid til annen at brukere som tidligere har fått godkjent kommentarer allikevel opplever at deres kommentar blir lagt til godkjenning, som en følge av ordfilteret.
  • Til slutt benytter jeg filtrering av IP-adresser. Dette er en manuell jobb, hvor jeg oppdaterer en IP-adresseliste basert på statistikk. Hvis en IP-adresse står for et visst antall spam-kommentarer, sperrer jeg IP-adressen fra å aksessere bekkelund.net. På denne måten unngår jeg både at det blir lagt igjen uønskede kommentarer, i tillegg til at spammerne ikke kaster bort båndbredden jeg har tilgjengelig fra min ISP.

Dette er altså ikke en perfekt løsning, men den er brukervennlig for deg som skal legge igjen kommentarer, i tillegg til at den ikke slipper igjennom spam. Ulempen er selvfølgelig at kommentarer som ligger til godkjenning blir liggende en viss tid før den godkjennes. Spørsmålet er om du foretrekker en løsning med høy brukerterskel eller en løsning som inviterer alle til å delta.

8 kommentarer til «CAPTCHA»

  1. Hvis alle webmastere lager litt plunder og heft for spammerne ved å lage forskjellige løsninger, blir det mer jobb for dem. For manuell hacking er derimot metoden du skisserer best.

    Jeg misliker også CAPTCHA veldig. Derfor gjør jeg, litt forenklet, følgende:

    - I det brukeren begynner å skrive i et textarea- eller inputfelt, gjør AJAX et kall i bakgrunnen og returnerer et ID-nummer til et skjult form-felt (jeg kjører altså en INSERT). Samtidig registrerer jeg klokkeslettet dette skjer. Jeg har altså en “tom” rad i databasen med kun ID og dato/klokkeslett.
    - Når brukeren så submiter, sjekker jeg at klokkeslettet er mindre enn en time, men mer enn 5 sekunder siden. Hvis ikke, kommer CAPTCHA opp som en mellomside. Deretter kjører jeg en UPDATE på den tidligere opprettede raden.

    Ingen perfekt løsning, men perfekt for min del så langt. Den fungerer vel på sett og vis fordi ikke så mange har akkurat denne implementasjonen. Oppfordrer derfor utviklere til å finne på “rare ting”. :-)

    Dette er en kommentar

  2. Det er to ting du glemmer her Martin :-)

    1. Det finnes brukere som ikke har anledning til CAPTCHA i det hele tatt, rett og slett fordi dem ikke kan se bilder, jeg tenker selvfølgelig på sterkt svaksynte eller blinde brukere, uansett hvor vant jeg er til CAPTCHA i dag, vil det være umulig for meg å benytte om jeg skulle miste det lille jeg har igjen av syn.

    2. Du har skrevet innlegget ditt kun for bloggkomentarer, men hva med nettsider, som krever registrering, som f.eks. gmail.com diskusjonsforumet til The Gathering (og andre). osv. Der vil ikke løsningene du skiserer være så enkle…

    Dette er en kommentar

  3. Jeg er 110% enig med deg i at spamfiltre ikke bør plage brukeren, CAPTCHA er et teknologisk blindspor i mine øyne. Det eneste unntaket jeg kan se for meg er hvis brukeren mangler støtte for teknologier som spamfilteret behøver(og som er “vanlige”, slik som cookies eller javascript). Jeg har implementert en slik løsning for min arbeidsgiver (debatter på iTromso.no) hvor det kun er brukere uten javascript som merker spamfilteret, og da i form av et enkelt regnestykke som må fylles ut.

    Nå skal det sies at slike filter er veldig lette for spammere å bryte seg gjennom, men så lenge man bruker en selvlaget løsning og ikke en standardisert en er det relativt trygt. Men jeg må tilstå jeg likte cookies-løsningen din også. :)

    Dette er en kommentar

  4. Fungerer løsningen din uten støtte for JavaScript, Svenn? Ikke at jeg ser det som et problem, men er bare nysgjerrig.

    At jeg ikke omtaler de to punktene betyr ikke at jeg har glemt eller oversett de, Andreas. Kan jo ikke omtale alt som bruker skjemaer heller. Da ville lista blitt laaang. :-)

    Dette er en kommentar

  5. Det er ikke nødvendigvis så vanskelig for spammere å omgå CAPTCHA heller. Du legger bare ut en «honeypot» og får massevis av mennesker til å taste de inn for deg.

    Seth Godin har en liten artikkel om det her:
    http://sethgodin.typepad.com/seths_blog/2007/10/diabolical.html

    Dette er en kommentar

  6. Veldig bra poeng, Bjørn!

    Jeg er forresten i gang med å skrive en post om hvordan CAPTCHA egentlig bør fungere, og hvordan man løser det rent teknisk.

    Dette er en kommentar

  7. Så Martin, for å spamme deg i fillebiter så trenger man bare å bruke epost/url til en av de kommentatørene som du allerede har godkjent? ;)

    Dette er en kommentar

  8. Nei, så enkelt er det heldigvis ikke, Petter. :-)

    Dette er en kommentar

Ett trackback / pingback til «CAPTCHA»

Legg igjen en kommentar

Før du poster en kommentar må du være kjent med retningslinjene for kommentarposting, samt personvernpolitikken for bekkelund.net.

Felter merket med * må fylles ut. Din e-postadresse vil ikke være synlig.

Formatering med XHTML: Du kan bruke disse elementene til formatering: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> . Tekstbaserte uttrykksikoner konverteres automatisk til bilder. Hjelp til formatering.

Martin Bekkelund er fornøyd bruker av WordPress med hjemmelaget tema.
Du kan abonnere på både artikler som Atom, RSS 2.0 eller RSS 0.92, samt kommentarer som RSS 2.0.
Denne artikkelen ble til ved hjelp av 13 kopper espresso konsumert på 0.444 minutter.

Copyright 1995 - 2008 Martin Bekkelund
xhtml
css
rss
cc
508
aaa
v6.08