Latterlig enkel og usynlig CAPTCHA

gorlilla_captcha03 Ved bruk av litt enkel jQuery-magi kan en gjøre et skjema mindre interessant for skjemaspammerne der ute. Kort sagt: Fjern action-attributtet!

Et halvt år uten spam

Jeg er nok ikke den første som har kommet på denne lure ideen, og det finnes flere bedre måter å håndtere såkalt form spam på, men denne er så latterlig enkel - og tilsynelatende effektiv - at jeg bare må spre det glade budskap.

For et halvt års tid siden drukna jeg i spam fra kommentarskjemaene på dette nettstedet. Jeg er ingen stor tilhenger av såkalte Captcha'er (de er enkelt og greit irriterende) og kjørte derfor uten det i håp om at jeg ikke skulle bli spamma ned. Men det ble jeg.

Løsninga på problemet er basert på en antagelse om at et skjema med et tomt action-attributt, altså ikke noen skjema-handler, er et mindre interessant mål for spam-bots og slikt. Ingen action = ingen destinasjon.

Løsninga er litt enkel jQuery-magi

På dette nettstedet kjører jeg jQuery Form Validation Plugin (kompatibel med jQuery 1.3.2) som etter min mening er genialt enkelt å forholde seg til. I metodekallet til .validate() kan en hekte på en del options, der i blant submitHandler som er en såkalt callback for å håndtere postinga av skjemaet etter det er validert. All kode som trengs er dette her:

 
      $("form#my-form").validate({
      submitHandler: function(form) { $(this).attr('action', 'action-attributtets innhold/verdi settes inn her');              
      form.submit();                             
      }
      });
      
  

I tillegg er action-attributtet i selve skjemaet da tomt (action=""). Nøkkelen er altså submitHandler'en som kjører inn action først etter at skjemaet er validert. Mye enklere blir det ikke, og det fungerer tilsynelatende veldig, veldig bra.

Hvordan en slik enkel fiks for å lage et "spamsikkert" skjema i det lange løp vil fungere på et større og mer interessant "mål", eller nettsted, vites ikke, men ikke én spamkommentar har sluppet igjennom her siden januar 2009 - og før den tid var antallet oppe i ca 1000-1500 per uke.

Kort oppsummert: Null spam, latterlig enkel implementering, og sist men ikke minst: det krever ingenting av brukeren.

Publisert i webutvikling. Tagget med jQuery, Skjema og Spam.

Det finnes 1 kommentar

Vetle

På my.opera.com forsøkte vi oss på en "smart" løsning på captcha, men de har nå gått over til reCAPTCHA.

Problemet med løsninger som dette, er at de bare fungerer så lenge spammerene ikke er ute etter de, og du bruker en løsning som ikke er utbredt. Løsningen din krever bare at Javascript eksekveres, og det er ingenting som hindrer spammere i å gjøre dette.

Men misforstå meg rett, det kan godt være dette fungerer utmerket i lang tid fremover! Alikevel føler jeg at det er nødvendig å påpeke at dette ikke er en løsning som er god nok, og at den ikke er vanskelig å komme seg rundt.

CAPTCHA og anti-spam løsninger er et område det jobbes mye med rundtomkring i verden, og det finnes en del alternativer, men fremdeles er det ingen som har kommet opp med en bedre løsning en den som er mest utbredt.

Dette skjemaet krever at Javascript er påslått

Skriv en kommentar