Acme-CPANModulesBundle-Import-PerlDancerAdvent-2018
view release on metacpan or search on metacpan
devdata/http_advent.perldancer.org_2018_21 view on Meta::CPAN
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title> Spam and bot prevention without the use of CAPTCHAs | PerlDancer Advent Calendar</title>
<link rel="stylesheet" href="/css/style.css" />
<link rel="alternate" type="application/rss+xml" title="All Articles " href="/feed/2018" />
<!-- Grab Google CDN's jQuery. fall back to local if necessary -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">/* <![CDATA[ */
!window.jQuery && document.write('<script src="/javascripts/jquery.js"><\/script>')
/* ]]> */</script>
<!-- Prettyfy -->
<link href="/css/prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="/javascripts/prettify.js"></script>
</head>
<body onload="prettyPrint()">
<div id="page">
<div id="sidebar">
<a href="/" class="homelink">Dancer Advent Calendar</a><br />
<p>
The PerlDancer Advent Calendar is a community-driven project that aims
to showcase the Dancer Perl web framework.
</p>
<p>
Each day of December until Christmas, one article about Dancer. Stay tuned for new moves!
</p>
<ul id="sidebar-items">
<li>
<h3>About Dancer</h3>
<ul class="links">
<li><a href="http://www.perldancer.org/">Dancer homepage</a></li>
<li><a href="http://twitter.com/PerlDancer">Official Twitter</a></li>
<li><a href="http://github.com/PerlDancer/Dancer">Dancer on GitHub</a></li>
<li><a href="http://github.com/PerlDancer/Dancer2">Dancer 2 on GitHub</a></li>
<li><a class="feed" href="/feed/2018">RSS</a></li>
</ul>
</li>
</ul>
</div>
<div id="content">
<div class="pod-document"><h1><a name="spam_and_bot_prevention_without_the_use_of_captchas"></a>Spam and bot prevention without the use of CAPTCHAs</h1>
<h2><a name="the_problem"></a>The problem</h2>
<p>I was writing a contact form for my LLC, and having been the victim of an automated form-filler in the
past, I wanted to prevent getting spammed by my own contact form. My first instinct told me to add a CAPTCHA
to the form as a means to ensure there's a human at the keyboard. But as it turns out, this isn't a great
solution for a variety of reasons.</p>
<h2><a name="a_little_background"></a>A little background</h2>
<p>I worked with my friend Job a few contracts back, and he is passionate about developing accessible software and
educating other developers about accessibility issues. Job really opened my eyes to a lot of bad development
practices, and the problems they caused for users with accessibility needs. So when he heard I wanted to
put a CAPTCHA on my form, he nearly had a stroke. When the initial shock wore off, we talked about how I could
accomplish my goal, but do it in an accessible way.</p>
<p>CAPTCHAs come in a number of shapes and sizes. At the time I wrote this, reCAPTCHA was the latest hotness.
It featured text that was really hard to read, and on occasion, featured audio for those who couldn't see or
read the text. They were also unfortunately stupidly easy to crack, and thanks to Mechanical Turk and other
tricks, they quickly became a useless piece of nuisance for your average web user.</p>
<p>Why are CAPTCHAs bad for accessibility? I don't know about you, but even with good vision, I have a really
hard time reading the text on many CAPTCHAs. I cannot begin to imagine how much more difficult it would be
for a sighted user to attempt to read one. But many have audio, you say! Have you listened to a CAPTCHA
that's read to you? I am slightly hard of hearing, and I am unable to make them out many times. And some
clever developers have even found ways to circumvent the audio CAPTCHAs now. With more modern CAPTCHAs, users
with screen readers and other assistive devices/settings can often exhibit some of the same signs that bots
do, but unfortunately, you're not allowed to declare or prove your humanity - it's all up to a machine
( run in 1.235 second using v1.01-cache-2.11-cpan-437f7b0c052 )