<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ataraxia! &#187; captcha</title>
	<atom:link href="http://www.ataraxia.com.br/posts/tag/captcha/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ataraxia.com.br</link>
	<description>O estado da arte em TI</description>
	<lastBuildDate>Sun, 17 Jul 2011 21:36:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Criando CAPTCHAs em PHP</title>
		<link>http://www.ataraxia.com.br/posts/criando-captchas-em-php</link>
		<comments>http://www.ataraxia.com.br/posts/criando-captchas-em-php#comments</comments>
		<pubDate>Sun, 12 Apr 2009 03:06:23 +0000</pubDate>
		<dc:creator>Bruno Lustosa</dc:creator>
				<category><![CDATA[programação]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[captcha]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[segurança]]></category>

		<guid isPermaLink="false">http://www.ataraxia.com.br/?p=236</guid>
		<description><![CDATA[Após postar a galeria dos 10 piores CAPTCHAs do mundo, estou postando o artigo prometido sobre como criar um CAPTCHA em PHP. Como já dito antes, a função de um CAPTCHA é apresentar um problema de fácil solução para um ser humano, mas de difícil resolução por um computador. Normalmente, os CAPTCHAs tomam a forma [...]]]></description>
			<content:encoded><![CDATA[<p>Após postar a <a href="http://www.ataraxia.com.br/posts/os-10-piores-captchas-do-mundo">galeria dos 10 piores CAPTCHAs do mundo</a>, estou postando o artigo prometido sobre como criar um CAPTCHA em PHP.<br />
Como já dito antes, a função de um <acronym title="Completely Automated Public Turing test to tell Computers and Humans Apart">CAPTCHA</acronym> é apresentar um problema de fácil solução para um ser humano, mas de difícil resolução por um computador. Normalmente, os CAPTCHAs tomam a forma de imagens com letras distorcidas, e é exatamente este o tipo que iremos criar neste artigo.</p>
<h2>Como funciona na teoria?</h2>
<p>O funcionamento de um CAPTCHA de letras tortas é bem simples. O servidor gera uma string que será transformada em uma imagem. A string é salva em algum lugar (normalmente em uma variável de sessão). A imagem é apresentada dentro de um formulário. Ao submeter o formulário, o script checa se o que o usuário digitou bate com o conteúdo da variável de sessão. Se bater, o usuário passou no teste.<br />
Na teoria, tudo muito simples.</p>
<h2>Mas e na prática?</h2>
<p>Na prática, tudo também pode ser igualmente simples. Ao invés de reinventar a roda, podemos utilizar uma classe chamada <a href="http://www.phpcaptcha.org/">Securimage</a>, que serve justamente para gerar CAPTCHAs.</p>
<h2>Securimage</h2>
<p>Securimage é uma classe em PHP que utiliza a biblioteca gráfica GD para gerar imagens com CAPTCHAs. A classe é bastante versátil, e suporta várias opções, como fontes <acronym title="TrueType Font">TTF</acronym>, imagens de fundo, linhas, arcos e bem mais.<br />
O primeiro passo é baixar o pacote com a <a href="http://www.phpcaptcha.org/download/">versão mais recente</a> e descompactá-lo em algum lugar. A partir deste ponto, vou assumir que o pacote foi descompactado em uma pasta chamada &#8220;securimage&#8221; no diretório raiz do site.</p>
<h2>Criando o form com a imagem</h2>
<p>Dentro do formulário que se deseja proteger, colocamos uma tag <b>img</b>, que irá conter a imagem gerada pelo Securimage:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">img</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;captcha&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/securimage/securimage_show.php&quot;</span> <span style="color: #000066;">alt</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;CAPTCHA&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span></pre></div></div>

<p>Este script <b>securimage_show.php</b> é bem pequeno (3 linhas), e irá criar um CAPTCHA com as opções padrões da classe. Veremos mais adiante algumas formas de se customizar a imagem.<br />
Além da imagem, também precisamos de um campo para o usuário digitar as letras contidas na imagem:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;captcha_txt&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span></pre></div></div>

<p>E com isso o formulário está pronto.</p>
<h2>A checagem no backend</h2>
<p>O usuário viu a imagem, digitou os dados e submeteu o formulário. Agora é hora de checar se o código digitado bate com o texto contido na imagem.<br />
Logo no início do script que recebe os dados do formulário (em caso de dúvida, veja o atributo <b>action</b> da tag <b>form</b>), é preciso inicializar as variáveis de sessão:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>É importante que este código venha antes de qualquer saída, ou teremos um erro do tipo &#8220;Cannot modify header information &#8211; headers already sent&#8230;.&#8221;. Na dúvida, coloque logo no início.<br />
O restante da checagem é bastante simples. Basta instanciarmos um objeto da classe Securimage e chamar um método que faz a checagem:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">require_once</span> <span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'DOCUMENT_ROOT'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/securimage/securimage.php'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$securimage</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Securimage<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$securimage</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">check</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'captcha_txt'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Código digitado corretamente</span>
    <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Ok, o código foi digitado corretamente.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// Código digitado não bate com a imagem</span>
    <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Erro: código incorreto.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>O exemplo acima apenas ilustra como é feita a checagem. As chamadas a <b>die()</b> devem ser substituídas de acordo com a lógica da página onde o CAPTCHA está sendo inserido. No caso do código estar correto, deve-se prosseguir com o processamento do formulário, e caso não esteja, possivelmente exibir novamente o formulário com uma mensagem de erro. Será gerado um novo CAPTCHA automaticamente.</p>
<h2>Outras opções</h2>
<p>Como dito anteriormente, a classe é bastante versátil, e suporta diversas opções para a geração das imagens. Todas as opções estão descritas na <a href="http://www.phpcaptcha.org/Securimage_Docs/Securimage/classes/Securimage.html">documentação da classe</a>, mas vou transcrever várias das opções aqui.<br />
Para se customizar a imagem, basta editar diretamente o script <b>securimage_show.php</b>, que é o script usado na tag <b>img</b>. Originalmente, ele é apenas o seguinte:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">include</span> <span style="color: #0000ff;">'securimage.php'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$img</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> securimage<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$img</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">show</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Podemos passar opções para a classe antes de chamar o método <b>show()</b>. Apenas para ilustrar, aqui vai um exemplo bem customizado:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">include</span> <span style="color: #0000ff;">'securimage.php'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$img</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> securimage<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$img</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">code_length</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">8</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// 8 ao invés de apenas 4 caracteres</span>
<span style="color: #000088;">$img</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">charset</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;AEIOU&quot;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Apenas vogais</span>
<span style="color: #000088;">$img</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">image_width</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">280</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Padrão é 175px para 4 caracteres</span>
<span style="color: #000088;">$img</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">multi_text_color</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;#ff0000,#0000ff&quot;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Letras azuis e vermelhas</span>
<span style="color: #000088;">$img</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">image_bg_color</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;#ffff00&quot;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Fundo amarelo</span>
<span style="color: #000088;">$img</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">show</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>E abaixo, 3 exemplos de CAPTCHAs gerados por este script:</p>
<p><img src="http://www.ataraxia.com.br/wp-content/uploads/2009/04/11.png" alt="CAPTCHA - Exemplo 1" title="CAPTCHA - Exemplo 1" width="280" height="45" class="alignnone size-full wp-image-251" /><br />
<img src="http://www.ataraxia.com.br/wp-content/uploads/2009/04/21.png" alt="CAPTCHA - Exemplo 2" title="CAPTCHA - Exemplo 2" width="280" height="45" class="alignnone size-full wp-image-252" /><br />
<img src="http://www.ataraxia.com.br/wp-content/uploads/2009/04/31.png" alt="CAPTCHA - Exemplo 3" title="CAPTCHA - Exemplo 3" width="280" height="45" class="alignnone size-full wp-image-253" /></p>
<p>Como já dito, a classe suporta muitas outras opções, o melhor mesmo é ler a documentação caso se deseje customizar mais.</p>
<h3  class="related_post_title">Artigos relacionados</h3><ul class="related_post"><li><a href="http://www.ataraxia.com.br/posts/evitando-sql-injection-em-php" title="Evitando SQL injection em PHP">Evitando SQL injection em PHP</a></li><li><a href="http://www.ataraxia.com.br/posts/os-10-piores-captchas-do-mundo" title="Os 10 piores CAPTCHAs do mundo">Os 10 piores CAPTCHAs do mundo</a></li><li><a href="http://www.ataraxia.com.br/posts/seguranca-no-envio-de-emails" title="Segurança no envio de emails em PHP">Segurança no envio de emails em PHP</a></li><li><a href="http://www.ataraxia.com.br/posts/agendando-eventos-no-wordpress" title="Agendando eventos no WordPress">Agendando eventos no WordPress</a></li><li><a href="http://www.ataraxia.com.br/posts/removendo-o-generator-do-wordpress" title="Removendo o &#8220;generator&#8221; do Wordpress">Removendo o &#8220;generator&#8221; do Wordpress</a></li><li><a href="http://www.ataraxia.com.br/posts/escrevendo-plugins-para-o-wordpress" title="Escrevendo plugins para o Wordpress">Escrevendo plugins para o Wordpress</a></li><li><a href="http://www.ataraxia.com.br/posts/pegadinhas-no-php" title="Pegadinhas no PHP">Pegadinhas no PHP</a></li><li><a href="http://www.ataraxia.com.br/posts/otimizacao-em-php-parte-1-minify" title="Otimização em PHP, parte 1: Minify">Otimização em PHP, parte 1: Minify</a></li><li><a href="http://www.ataraxia.com.br/posts/precedencia-no-php" title="Precedência no PHP">Precedência no PHP</a></li><li><a href="http://www.ataraxia.com.br/posts/evitando-spam-em-formularios" title="Evitando spam em formulários">Evitando spam em formulários</a></li><li><a href="http://www.ataraxia.com.br/posts/imprimindo-em-formularios-continuos-em-php" title="Imprimindo em formulários contínuos em PHP">Imprimindo em formulários contínuos em PHP</a></li><li><a href="http://www.ataraxia.com.br/posts/xml-no-php-com-xml_serializer-parte-2-de-2" title="XML no PHP com XML_Serializer, parte 2 de 2">XML no PHP com XML_Serializer, parte 2 de 2</a></li><li><a href="http://www.ataraxia.com.br/posts/xml-no-php-com-xml_serializer-parte-1-de-2" title="XML no PHP com XML_Serializer, parte 1 de 2">XML no PHP com XML_Serializer, parte 1 de 2</a></li><li><a href="http://www.ataraxia.com.br/posts/envio-de-emails-em-php" title="Envio de emails em PHP">Envio de emails em PHP</a></li><li><a href="http://www.ataraxia.com.br/posts/validacao-de-dados-em-php" title="Validação de dados em PHP">Validação de dados em PHP</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ataraxia.com.br/posts/criando-captchas-em-php/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Os 10 piores CAPTCHAs do mundo</title>
		<link>http://www.ataraxia.com.br/posts/os-10-piores-captchas-do-mundo</link>
		<comments>http://www.ataraxia.com.br/posts/os-10-piores-captchas-do-mundo#comments</comments>
		<pubDate>Fri, 10 Apr 2009 04:02:03 +0000</pubDate>
		<dc:creator>Bruno Lustosa</dc:creator>
				<category><![CDATA[humor]]></category>
		<category><![CDATA[captcha]]></category>
		<category><![CDATA[hahaha]]></category>
		<category><![CDATA[segurança]]></category>

		<guid isPermaLink="false">http://www.ataraxia.com.br/?p=217</guid>
		<description><![CDATA[Todos nós já vimos os CAPTCHAs por aí. São aquelas imagens com letras tortas, normalmente utilizadas para evitar que robôs automatizem tarefas que não devem ser automatizadas (por exemplo, criação de contas em webmails para envio de spam). CAPTCHA é um acrônimo para &#8220;Completely Automated Public Turing test to tell Computers and Humans Apart&#8221;, ou [...]]]></description>
			<content:encoded><![CDATA[<p>Todos nós já vimos os <a href="http://en.wikipedia.org/wiki/Captcha">CAPTCHAs</a> por aí. São aquelas imagens com letras tortas, normalmente utilizadas para evitar que robôs automatizem tarefas que não devem ser automatizadas (por exemplo, criação de contas em webmails para envio de spam). CAPTCHA é um acrônimo para &#8220;Completely Automated Public Turing test to tell Computers and Humans Apart&#8221;, ou &#8220;Teste de Turing público completamente automatizado para distinguir computadores de seres humanos&#8221;.</p>
<p>A idéia de um CAPTCHA é mostrar graficamente um problema onde a solução é muito simples para um ser humano, mas muito difícil para um computador resolver. Normalmente, letras tortas servem bem para isso, pois é difícil para um programa conseguir diferenciar as letras.</p>
<p>Porém, existem casos em que os CAPTCHAs podem ser extremamente difíceis de se resolver, mesmo para seres humanos. Apenas pra descontrair um pouco, extraí os exemplos abaixo do <a href="http://www.johnmwillis.com/other/top-10-worst-captchas/">blog do John Willis</a>, e decidi compartilhar por achar interessantes. Escreverei em breve um artigo sobre a criação de CAPTCHAs, mas por enquanto, fiquemos apenas com os piores deles. Seguindo a mesma ordem do blog original, aqui vão eles, do melhor para o pior:</p>
<h2>#10 &#8211; Fundo de plasma</h2>
<p>Ok, este nem está tão ruim assim. Dá pra se ler claramente o que está escrito:</p>
<p><img src="http://www.ataraxia.com.br/wp-content/uploads/2009/04/1.jpg" alt="CAPTCHA com plasma" title="CAPTCHA com plasma" width="307" height="161" class="size-full wp-image-219" /></p>
<h2>#9 &#8211; Letras parecidas</h2>
<p>Alguem consegue olhar e me dizer de cara o que está escrito nessa imagem? Seria &#8220;muaummwwv&#8221;?</p>
<p><img src="http://www.ataraxia.com.br/wp-content/uploads/2009/04/2.jpg" alt="Letras parecidas" title="Letras parecidas" width="335" height="203" class="size-full wp-image-223" /></p>
<h2>#8 &#8211; Substituição</h2>
<p>A idéia desse é até interessante, mas convenhamos, não é nada prático. Um humano normalmente tolera perder uns 2 segundos no máximo com um CAPTCHA. Quanto tempo você perdeu pra chegar na resposta desse?</p>
<p><img src="http://www.ataraxia.com.br/wp-content/uploads/2009/04/3.jpg" alt="CAPTCHA de substituição" title="CAPTCHA de substituição" width="500" height="197" class="alignnone size-full wp-image-224" /></p>
<h2>#7 &#8211; Impossível?</h2>
<p>Este, sem a cola que tem logo embaixo, imagino que seja impossível. A imagem tá tão poluída que pelo menos eu não consegui distinguir nada ali.</p>
<p><img src="http://www.ataraxia.com.br/wp-content/uploads/2009/04/4.jpg" alt="CAPTCHA poluído" title="CAPTCHA poluído" width="230" height="100" class="alignnone size-full wp-image-225" /></p>
<h2>#6 &#8211; Problema matemático</h2>
<p>Ok, já vi alguns CAPTCHAs que pedem pra fazer contas simples de adição e subtração. Agora, um que pede pra resolver uma derivada ou encontrar raízes de polinômios de grau 5? Acreditem, é real! <a href="http://random.irb.hr/signup.php">Verifiquem vocês mesmos</a>. Caso não apareça a derivada de primeira, só dar reload até aparecer. Não demora muito.</p>
<p><img src="http://www.ataraxia.com.br/wp-content/uploads/2009/04/5.jpg" alt="CAPTCHA matemático" title="CAPTCHA matemático" width="446" height="271" class="alignnone size-full wp-image-226" /></p>
<p>O mais interessante é que esses problemas, embora assustem, são matematicamente muito simples de serem resolvidos. Esta derivada, fazendo x=0 acaba se tornando a derivada de uma constante, e todos nós coitados que já <del datetime="2009-04-10T03:28:00+00:00">sofremos com</del> estudamos cálculo I sabemos que a derivada de qualquer constante vale 0. Todas as derivadas que eu vi nesse site caem nessa categoria.</p>
<h2>#5 &#8211; Psicodélico</h2>
<p>Esse eu também não consegui distinguir nada. Qual será a resposta correta?</p>
<p><img src="http://www.ataraxia.com.br/wp-content/uploads/2009/04/6.jpg" alt="CAPTCHA psicodélico" title="CAPTCHA psicodélico" width="388" height="138" class="alignnone size-full wp-image-227" /></p>
<h2>#4 &#8211; Texto na cor do fundo</h2>
<p>Ok a imagem ter um fundo colorido com padrões pra dificultar a leitura automatizada da imagem, mas usar uma cor no texto quase igual a cor de fundo dificulta um pouco, não?</p>
<p><img src="http://www.ataraxia.com.br/wp-content/uploads/2009/04/7.jpg" alt="Texto na cor do fundo" title="Texto na cor do fundo" width="334" height="171" class="alignnone size-full wp-image-228" /></p>
<h2>#3 &#8211; Que alfabeto é esse?</h2>
<p>É uma sequencia grande de caracteres, só não sei de que língua ou alfabeto. Me parece que alguem na hora de bolar o CAPTCHA escolheu a fonte errada e acabaram saindo essas coisas estranhas:</p>
<p><img src="http://www.ataraxia.com.br/wp-content/uploads/2009/04/8.jpg" alt="Que língua é essa?" title="Que língua é essa?" width="500" height="162" class="alignnone size-full wp-image-229" /></p>
<h2>#2 &#8211; Pontilhismo</h2>
<p>Esse CAPTCHA deve ter sido feito por algum apreciador do impressionismo ou do pontilhismo. Alguém adivinha o que está escrito?</p>
<p><img src="http://www.ataraxia.com.br/wp-content/uploads/2009/04/9.jpg" alt="Pontilhismo" title="Pontilhismo" width="433" height="94" class="alignnone size-full wp-image-230" /></p>
<h2>#1 &#8211; Not Found?</h2>
<p>E quando a imagem não carrega? Como fazer pra resolver o CAPTCHA? Acho que de todos, este é o mais impossível de se resolver!</p>
<p><img src="http://www.ataraxia.com.br/wp-content/uploads/2009/04/10.jpg" alt="Not Found" title="Not Found" width="379" height="254" class="alignnone size-full wp-image-231" /></p>
<div class="divisoria"></div>
<p>Alguém já esbarrou por aí em algum outro CAPTCHA que mereça entrar em uma galeria como esta?</p>
<h3  class="related_post_title">Artigos relacionados</h3><ul class="related_post"><li><a href="http://www.ataraxia.com.br/posts/criando-captchas-em-php" title="Criando CAPTCHAs em PHP">Criando CAPTCHAs em PHP</a></li><li><a href="http://www.ataraxia.com.br/posts/evitando-sql-injection-em-php" title="Evitando SQL injection em PHP">Evitando SQL injection em PHP</a></li><li><a href="http://www.ataraxia.com.br/posts/evitando-spam-em-formularios" title="Evitando spam em formulários">Evitando spam em formulários</a></li><li><a href="http://www.ataraxia.com.br/posts/seguranca-no-envio-de-emails" title="Segurança no envio de emails em PHP">Segurança no envio de emails em PHP</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.ataraxia.com.br/posts/os-10-piores-captchas-do-mundo/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

