<?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>Pedro Ventura | Blog spam artículos spam Encuentra manuales y tutoriales sobre spam Artículos sobre esta técnica tan perjudicial para cualquier empresa, pero que sigue siendo hoy en día la técnica más usada para invadir cuentas de email con correos. 
 </title>
	<atom:link href="http://www.pedroventura.com/blog_programacion/tag/spam/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pedroventura.com</link>
	<description>Portfolio Profesional y Blog</description>
	<lastBuildDate>Sat, 04 Feb 2012 10:50:33 +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>Pedazo hackeo que me han hecho! :(</title>
		<link>http://www.pedroventura.com/blog_programacion/personal/pedazo-hackeo-que-me-han-hecho/</link>
		<comments>http://www.pedroventura.com/blog_programacion/personal/pedazo-hackeo-que-me-han-hecho/#comments</comments>
		<pubDate>Thu, 28 Apr 2011 12:53:29 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=2664</guid>
		<description><![CDATA[Si ayer escribía que me habían colado comentarios spam porque posiblemente haya fallado akismet o algún servicio de wordpress. Hoy acabo de ver que ha pasado y porque aparecían esas palabras claves en Webmaster Tool. Y el problema es muchísimo mas serio que me hayan colado 3 comentarios spam. Directamente me han hackeado. Hoy he buscado en Google site:pedroventura.com con una de estas palabras. Y me he encontrado que todas las paginas de mi blog contenían esa y otras muchas palabras. Todas las paginas de mi blog! Por lo que no es simplemente unos comentarios. El tema es que el hackeo lo han hecho de tal manera que esas palabras que han metido son las que Google ha tomado como las mas relevantes pues salen en todas las descripciones de la busqueda en Google. Para echarse a llorar. Buscando en el código fuente de las paginas de mi blog que tiene cacheado Google, porque en mi blog ya no había rastro, veo que hay un trozo de html que me habían insertado. En todas las páginas. Bajo la siguiente etiqueta de html, que lo que hace es sacar fuera de la vista del usuario colocando todo el contenido dentro de [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/internet/maldito-spam-se-han-cebado-en-semana-santa/' rel='bookmark' title='Maldito Spam!! Se han cebado en semana santa!!'>Maldito Spam!! Se han cebado en semana santa!!</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/enviar-un-correo-via-telnet-desde-consola-linux/' rel='bookmark' title='Enviar un correo via telnet desde consola linux'>Enviar un correo via telnet desde consola linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/seo/analisis-de-seo-numero-de-paginas-indexadas-y-eliminadas/' rel='bookmark' title='Análisis de SEO. Número de paginas indexadas y eliminadas'>Análisis de SEO. Número de paginas indexadas y eliminadas</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/internet/crear-un-sitemap-para-videos/' rel='bookmark' title='crear un sitemap para videos'>crear un sitemap para videos</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/seo/sigue-las-reglas-del-juego-y-no-desapareceras/' rel='bookmark' title='Sigue las reglas del juego y no desaparecerás.'>Sigue las reglas del juego y no desaparecerás.</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Si ayer escribía que me habían colado <a href="http://www.pedroventura.com/blog_programacion/internet/maldito-spam-se-han-cebado-en-semana-santa/">comentarios spam</a> porque posiblemente haya fallado akismet o algún servicio de wordpress. Hoy acabo de ver que ha pasado y porque aparecían esas palabras claves en Webmaster Tool. Y el problema es muchísimo mas serio que me hayan colado 3 comentarios spam. Directamente me han hackeado.</p>
<p>Hoy he buscado en Google site:pedroventura.com con una de estas palabras. Y me he encontrado que todas las paginas de mi blog contenían esa y otras muchas palabras. Todas las paginas de mi blog! Por lo que no es simplemente unos comentarios.</p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/04/hackeado3.jpg" alt="" title="hackeado3" width="503" height="944" class="aligncenter size-full wp-image-2667" /></p>
<p> El tema es que el hackeo lo han hecho de tal manera que esas palabras que han metido son las que Google ha tomado como las mas relevantes pues salen en todas las descripciones de la busqueda en Google. Para echarse a llorar.</p>
<p>Buscando en el código fuente de las paginas de mi blog que tiene cacheado Google, porque en mi blog ya no había rastro, veo que hay un trozo de html que me habían insertado. En todas las páginas.</p>
<p>Bajo la siguiente etiqueta de html, que lo que hace es sacar fuera de la vista del usuario colocando todo el contenido dentro de la etiqueta <em>em</em> mas de 3000 pixeles por arriba y a la izquierda todo el contenido, haciendo que no se vea por pantalla.</p>
<pre class="brush: xml; title: ;">
&lt;em style='font-size:13px; left:-3150px; position: absolute; top:-3093px; background-color:#943033;'&gt;
</pre>
<p>Y para flipar, no es que me hayan colado 2 o 4 enlaces, ha sido todo esto!!</p>
<p><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/04/hackeado2.jpg" alt="" title="hackeado2" width="491" height="5268" class="aligncenter size-full wp-image-2665" /></p>
<p> <img src='http://blogpv2011.s3.amazonaws.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  <img src='http://blogpv2011.s3.amazonaws.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  Malditos cabrones!!</p>
<p>Todos los enlaces y palabras spam me las han metido con algún tipo de hack, un php injection, o un hack con javascript, realmente estoy alucinando, super frustrado, demasiado triste y sin tiempo para investigar el tipo de hack que me han hecho. No se si habrá sido a través del formulario de comentarios o desde el de búsqueda. No encuentro en el codigo php o js el trozo con el html que me han inyectado&#8230; pero ya no se esta incluyendo en el código fuente.</p>
<p>De momento lo que puedo hacer es securizar mas los permisos de los php y el resto de achivos hasta que pueda investigar por donde han entrado.</p>
<p>Por lo que he podido leer es un hack que vienen haciendo desde hace un tiempo por alguna vulnerabilidad de WP.</p>
<p><a rel="nofollow" target=""_blank href="http://wordpress.org/support/topic/i-cant-find-these-spam-links-anywhere-plus-more-spam-advice#post-1230132">http://wordpress.org/support/topic/i-cant-find-these-spam-links-anywhere-plus-more-spam-advice#post-1230132</a></p>
<p><a rel="nofollow" target="_blank" href="http://www.deepjiveinterests.com/2008/04/07/breaking-tailrank-exposes-massive-number-of-blogs-hacked/">http://www.deepjiveinterests.com/2008/04/07/breaking-tailrank-exposes-massive-number-of-blogs-hacked/</a></p>
<p><strong>Si alguno le ha pasado lo mismo o sabe del tema me vendría bien la opinión de mas personas.</strong></p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> como hackear un blog, me han hackeado el blog wordpress, como han podido hakear mi blog, hackear un blog, me han hackeado blogspot</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/internet/maldito-spam-se-han-cebado-en-semana-santa/' rel='bookmark' title='Maldito Spam!! Se han cebado en semana santa!!'>Maldito Spam!! Se han cebado en semana santa!!</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/enviar-un-correo-via-telnet-desde-consola-linux/' rel='bookmark' title='Enviar un correo via telnet desde consola linux'>Enviar un correo via telnet desde consola linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/seo/analisis-de-seo-numero-de-paginas-indexadas-y-eliminadas/' rel='bookmark' title='Análisis de SEO. Número de paginas indexadas y eliminadas'>Análisis de SEO. Número de paginas indexadas y eliminadas</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/internet/crear-un-sitemap-para-videos/' rel='bookmark' title='crear un sitemap para videos'>crear un sitemap para videos</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/seo/sigue-las-reglas-del-juego-y-no-desapareceras/' rel='bookmark' title='Sigue las reglas del juego y no desaparecerás.'>Sigue las reglas del juego y no desaparecerás.</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/personal/pedazo-hackeo-que-me-han-hecho/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Maldito Spam!! Se han cebado en semana santa!!</title>
		<link>http://www.pedroventura.com/blog_programacion/internet/maldito-spam-se-han-cebado-en-semana-santa/</link>
		<comments>http://www.pedroventura.com/blog_programacion/internet/maldito-spam-se-han-cebado-en-semana-santa/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 12:07:45 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[seguridad]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=2649</guid>
		<description><![CDATA[Maldita sea!!! Después de semana santa, reviso los comentarios de mi blog y me encuentro que como siempre hay mucho spam y poco ham! Vamos lo normal, pero inexplicablemente unos 4 o 5 comentarios que claramente eran spam habían saltado el filtro de akismet. Adicionalmente había algunos pingback de un blogs externos, blogs de spameo, absurdos y sin sentido. Mirando en Webmaster Tool y en Analytics veo que es un desastre. Todo los comentarios que han conseguido entrar han sido durante la semana pasada entre el 19 y 24 de Abril. Justo en semana santa cuando ya no estaba chequeando mi blog con la frecuencia que lo suelo hacer. En Google Analitycs encuentro búsquedas que se han hecho como las que se puede ver en el pantallazo que hay de WebMasterTool, no las voy a escribir porque ya he tenido suficiente con los comentarios spam que me han hecho. Y bueno en WMT es hasta peor! Todos los comentarios que no he revisado a tiempo, han sido indexados y Google ha registrado que estas palabras son las palabras clave de mi web!! Pues vaya!! Que frustración con lo que me esta costando posicionar el contenido que voy colgando y por [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/personal/pedazo-hackeo-que-me-han-hecho/' rel='bookmark' title='Pedazo hackeo que me han hecho! :('>Pedazo hackeo que me han hecho! :(</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/cakephp-funcion-para-bloquear-ips-y-evitar-spam/' rel='bookmark' title='cakephp funcion para bloquear ips y evitar spam'>cakephp funcion para bloquear ips y evitar spam</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/enviar-un-correo-via-telnet-desde-consola-linux/' rel='bookmark' title='Enviar un correo via telnet desde consola linux'>Enviar un correo via telnet desde consola linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/seo/analisis-de-seo-numero-de-paginas-indexadas-y-eliminadas/' rel='bookmark' title='Análisis de SEO. Número de paginas indexadas y eliminadas'>Análisis de SEO. Número de paginas indexadas y eliminadas</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/sysadmin/bloquear-usuarios-y-bots-no-deseados-desde-htacces/' rel='bookmark' title='Bloquear usuarios y bots no deseados desde .htacces'>Bloquear usuarios y bots no deseados desde .htacces</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Maldita sea!!! Después de semana santa, reviso los comentarios de mi blog y me encuentro que como siempre hay mucho spam y poco ham! Vamos lo normal, pero inexplicablemente unos 4 o 5 comentarios que claramente eran spam habían saltado el filtro de akismet. Adicionalmente había algunos pingback de un blogs externos, blogs de spameo, absurdos y sin sentido.</p>
<p>Mirando en Webmaster Tool y en Analytics veo que es un desastre.</p>
<p>Todo los comentarios que han conseguido entrar han sido durante la semana pasada entre el 19 y 24 de Abril. Justo en semana santa cuando ya no estaba chequeando mi blog con la frecuencia que lo suelo hacer.</p>
<p>En Google Analitycs encuentro búsquedas que se han hecho como las que se puede ver en el pantallazo que hay de WebMasterTool, no las voy a escribir porque ya he tenido suficiente con los comentarios spam que me han hecho.</p>
<p>Y bueno en WMT es hasta peor! Todos los comentarios que no he revisado a tiempo, han sido indexados y Google ha registrado que estas palabras son las palabras clave de mi web!! Pues vaya!! Que frustración con lo que me esta costando posicionar el contenido que voy colgando y por este maldito spam espero no ser baneado por Google.</p>
<p>Pero como han conseguido cambiar todas la palabras claves de mi blog en 4 dias?? Esto es lo que no entiendo! Porque la densidad de este tipo de palabras no es ni mucho menos relevante, que hasta lo que había en su momento. Palabras como php, cakephp, mysql, ajax, jquery&#8230;que puede hacer miles entre todos los artículos de mi blog hayan sido sustituidas por esto?? </p>
<p>Supongo que será el resumen de las palabras de la última semana, porque sino no tiene sentido alguno. </p>
<p><a href="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/04/spam_pv.jpg"><img src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2011/04/spam_pv.jpg" alt="" title="spam_pv" width="525" height="728" class="aligncenter size-full wp-image-2650" /></a></p>
<p>También leyendo en varios blogs, comentan sobre los últimos 2 ataques que ha recibido WordPress. Puede que todo venga por esta causa.<br />
Puede que el servicio de akismet haya quedado dañado o inoperativo durante algún tiempo..?<br />
Primero un ataque de denegación de servicio a primeros de Marzo y ahora uno en los que han sido capaces de penetrar a los servidores como root. Comprometiendo los blogs de sus 18 millones de usuarios, el código fuente de la plataforma, las APIs o las contraseñas de los perfiles en Twitter y Facebook de los usuarios que integraban sus blogs con estas redes sociales.</p>
<p>Estoy enfadadísimo porque también estoy haciendo cambios de SEO y mejorando las urls de mi blog y espero no ser penalizado por tener esta mierda de palabras asociadas a mi site. Que en ninguno momento he puesto ni una de estas palabras a propósito. Espero que Google vuelva a rastrear mi sitio lo antes posible y verificar que no hay ninguna de estas palabras por ningún lado!</p>
<p>Sea lo que sea, el spam es una lacra!!! Maldito SPAM!!!!</p>


<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/personal/pedazo-hackeo-que-me-han-hecho/' rel='bookmark' title='Pedazo hackeo que me han hecho! :('>Pedazo hackeo que me han hecho! :(</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/cakephp-funcion-para-bloquear-ips-y-evitar-spam/' rel='bookmark' title='cakephp funcion para bloquear ips y evitar spam'>cakephp funcion para bloquear ips y evitar spam</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/enviar-un-correo-via-telnet-desde-consola-linux/' rel='bookmark' title='Enviar un correo via telnet desde consola linux'>Enviar un correo via telnet desde consola linux</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/seo/analisis-de-seo-numero-de-paginas-indexadas-y-eliminadas/' rel='bookmark' title='Análisis de SEO. Número de paginas indexadas y eliminadas'>Análisis de SEO. Número de paginas indexadas y eliminadas</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/sysadmin/bloquear-usuarios-y-bots-no-deseados-desde-htacces/' rel='bookmark' title='Bloquear usuarios y bots no deseados desde .htacces'>Bloquear usuarios y bots no deseados desde .htacces</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/internet/maldito-spam-se-han-cebado-en-semana-santa/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Captcha de seguridad en cakePHP con Securimage</title>
		<link>http://www.pedroventura.com/blog_programacion/cakephp/captcha-de-seguridad-en-cakephp-con-securimage/</link>
		<comments>http://www.pedroventura.com/blog_programacion/cakephp/captcha-de-seguridad-en-cakephp-con-securimage/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 15:00:43 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[seguridad]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=1396</guid>
		<description><![CDATA[Lo primero algo de teoría.. ¿Qué es Securimage? Securimage es un código abierto libre script PHP CAPTCHA para la generación de imágenes complejas y códigos CAPTCHA para proteger las formas de spam y el abuso. Se puede añadir fácilmente en los formularios existentes en su sitio web para proporcionar una protección contra los robots de spam. Se puede ejecutar la mayoría en cualquier servidor web, siempre y cuando usted tiene PHP instalado, y el apoyo de GD en PHP. Securimage hace todo, desde la generación de las imágenes CAPTCHA para validar el código escrito. Características * Mostrar una imagen en sólo 3 líneas de código * Validar presentado las entradas en menos de 6 líneas de código * Longitud del código personalizable * Personalizable conjuntos de caracteres * Soporte de fuentes TTF * Utilice fuentes personalizadas GD cuando TTF no está disponible * Fácil de añadir imágenes de fondo * Múltiples colores, distorsionada, opciones de texto y transparente * Personalizable Flash para transmitir audio en MP3 de código CAPTCHA * Utilice una lista de palabras para la generación de códigos Fuente: http://www.phpcaptcha.org/ Ahora la receta para crear el captcha de seguridad e integrarlo con CakePHP Lo primero descarga las librerías, [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/php/instalar-un-captcha-de-seguridad/' rel='bookmark' title='instalar un captcha de seguridad'>instalar un captcha de seguridad</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/crear-archivos-pdf-con-cakephp/' rel='bookmark' title='Crear archivos PDF con CakePHP'>Crear archivos PDF con CakePHP</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/componente-geo-posicionamiento-ip-con-cakephp/' rel='bookmark' title='componente geo posicionamiento ip con cakephp'>componente geo posicionamiento ip con cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/cakephp-funcion-para-bloquear-ips-y-evitar-spam/' rel='bookmark' title='cakephp funcion para bloquear ips y evitar spam'>cakephp funcion para bloquear ips y evitar spam</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/recortar-imagenes-en-cakephp-con-jquery/' rel='bookmark' title='recortar imagenes en cakephp con jquery.'>recortar imagenes en cakephp con jquery.</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Lo primero algo de teoría..</p>
<p>¿Qué es Securimage?</p>
<p>Securimage  es un código abierto libre script PHP CAPTCHA para la generación de  imágenes complejas y códigos CAPTCHA para proteger las formas de spam y  el abuso. Se puede añadir fácilmente en  los formularios existentes en su sitio web para proporcionar una  protección contra los robots de spam. Se puede ejecutar la mayoría en cualquier servidor web, siempre y cuando usted tiene PHP instalado, y el apoyo de GD en PHP. Securimage hace todo, desde la generación de las imágenes CAPTCHA para validar el código escrito.</p>
<p>Características</p>
<p>* Mostrar una imagen en sólo 3 líneas de código<br />
* Validar presentado las entradas en menos de 6 líneas de código<br />
* Longitud del código personalizable<br />
* Personalizable conjuntos de caracteres<br />
* Soporte de fuentes TTF<br />
* Utilice fuentes personalizadas GD cuando TTF no está disponible<br />
* Fácil de añadir imágenes de fondo<br />
* Múltiples colores, distorsionada, opciones de texto y transparente<br />
* Personalizable Flash para transmitir audio en MP3 de código CAPTCHA<br />
* Utilice una lista de palabras para la generación de códigos</p>
<p>Fuente: http://www.phpcaptcha.org/</p>
<p>Ahora la receta para crear el captcha de seguridad e integrarlo con CakePHP</p>
<p>Lo primero descarga las librerías, fuentes, fondos, etc de SegureImage, he indicado la fuente de la url anteriormente o bien descargar de mi servidor la versión 2.01 a día de hoy la versión estable.</p>
<img alt="zip" title="zip" class="download-icon" src="http://www.pedroventura.com/wp-content/plugins/download-monitor/img/filetype_icons/document-zipper.png" /><br /><a href="http://www.pedroventura.com/wp-content/plugins/download-monitor/download.php?id=7" title="Descargado 123 veces" rel="nofollow">Descargar Secure Image Captcha Vendor v2.0.1.zip</a> - Descargado 123 veces
<p>Descomprimerlo y guárdalo en /app/vendors/securimage/</p>
<p>Después hay que crear el componente.</p>
<p>Crea el siguiente archivo /app/controllers/components/captcha.php con el código indicado<br />
Si estas usando cakephp 1.2 no tendrás que hacer nada.<br />
Si estas usando cakephp 1.1 tendrás que des-comentar y comentar las siguientes lineas respectivamente</p>
<pre class="brush: php; title: ;">
//vendor('securimage'.DS.'securimage'); //use this with the 1.1 core
App::import('Vendor','Securimage' ,array('file'=&gt;'securimage'.DS.'securimage.php')); //use this with the 1.2 core
</pre>
<pre class="brush: php; title: ;">
&lt;?php

/**
 * Securimage-Driven Captcha Component
 * @author debuggeddesigns.com
 * @license MIT
 * @version 0.1
 */

//cake's version of a require_once() call
//vendor('securimage'.DS.'securimage'); //use this with the 1.1 core
App::import('Vendor','Securimage' ,array('file'=&gt;'securimage'.DS.'securimage.php')); //use this with the 1.2 core

//the local directory of the vendor used to retrieve files
define('CAPTCHA_VENDOR_DIR', APP . 'vendors' . DS . 'securimage/');

class CaptchaComponent extends Object {

    var $controller;

    //size configuration
    var $_image_height = 75; //the height of the captcha image
    var $_image_width = 350; //the width of the captcha image

    //background configuration
    var $_draw_lines = true; //whether to draw horizontal and vertical lines on the image
    var $_draw_lines_over_text = false; //whether to draw the lines over the text
    var $_draw_angled_lines = true; //whether to draw angled lines on the image

    var $_image_bg_color = '#ffffff'; //the background color for the image
    var $_line_color = '#cccccc'; //the color of the lines drawn on the image
    var $_line_distance = 15; //how far apart to space the lines from eachother in pixels
    var $_line_thickness = 2; //how thick to draw the lines in pixels
    var $_arc_line_colors = '#999999,#cccccc'; //the colors of arced lines

    //text configuration
    var $_use_gd_font = false; //whether to use a gd font instead of a ttf font
    var $_use_multi_text = true; //whether to use multiple colors for each character
    var $_use_transparent_text = true; //whether to make characters appear transparent
    var $_use_word_list = false; //whether to use a word list file instead of random code

    var $_charset = 'ABCDEFGHKLMNPRSTUVWYZ23456789'; //the character set used in image
    var $_code_length = 5; //the length of the code to generate
    var $_font_size = 45; //the font size
    var $_gd_font_size = 50; //the approxiate size of the font in pixels
    var $_text_color = '#000000'; //the color of the text - ignored if $_multi_text_color set
    var $_multi_text_color = '#006699,#666666,#333333'; //the colors of the text
    var $_text_transparency_percentage = 45; //the percentage of transparency, 0 to 100
    var $_text_angle_maximum = 21; //maximum angle of text in degrees
    var $_text_angle_minimum = -21; //minimum angle of text in degrees
    var $_text_maximum_distance = 70; //maximum distance for spacing between letters in pixels
    var $_text_minimum_distance = 68; //minimum distance for spacing between letters in pixels
    var $_text_x_start = 10; //the x-position on the image where letter drawing will begin

    //filename and/or directory configuration
    var $_audio_path = 'audio/'; //the full path to wav files used
    var $_gd_font_file = 'gdfonts/bubblebath.gdf'; //the gd font to use
    var $_ttf_file = 'elephant.ttf'; //the path to the ttf font file to load
    var $_wordlist_file = 'words/words.txt'; //the wordlist to use

    function startup( &amp;$controller ) {

        //add local directory name to paths
        $this-&gt;_ttf_file = CAPTCHA_VENDOR_DIR.$this-&gt;_ttf_file;
		$this-&gt;_gd_font_file = CAPTCHA_VENDOR_DIR.$this-&gt;_gd_font_file;
    	$this-&gt;_audio_path = CAPTCHA_VENDOR_DIR.$this-&gt;_audio_path;
    	$this-&gt;_wordlist_file = CAPTCHA_VENDOR_DIR.$this-&gt;_wordlist_file;
		//CaptchaComponent instance of controller is replaced by a securimage instance
		$controller-&gt;captcha =&amp; new securimage();
		$controller-&gt;captcha-&gt;arc_line_colors = $this-&gt;_arc_line_colors;
		$controller-&gt;captcha-&gt;audio_path = $this-&gt;_audio_path;
		$controller-&gt;captcha-&gt;charset = $this-&gt;_charset;
		$controller-&gt;captcha-&gt;code_length = $this-&gt;_code_length;
		$controller-&gt;captcha-&gt;draw_angled_lines = $this-&gt;_draw_angled_lines;
		$controller-&gt;captcha-&gt;draw_lines = $this-&gt;_draw_lines;
		$controller-&gt;captcha-&gt;draw_lines_over_text = $this-&gt;_draw_lines_over_text;
		$controller-&gt;captcha-&gt;font_size = $this-&gt;_font_size;
		$controller-&gt;captcha-&gt;gd_font_file = $this-&gt;_gd_font_file;
		$controller-&gt;captcha-&gt;gd_font_size = $this-&gt;_gd_font_size;
		$controller-&gt;captcha-&gt;image_bg_color = $this-&gt;_image_bg_color;
		$controller-&gt;captcha-&gt;image_height = $this-&gt;_image_height;
		$controller-&gt;captcha-&gt;image_width = $this-&gt;_image_width;
		$controller-&gt;captcha-&gt;line_color = $this-&gt;_line_color;
		$controller-&gt;captcha-&gt;line_distance = $this-&gt;_line_distance;
		$controller-&gt;captcha-&gt;line_thickness = $this-&gt;_line_thickness;
		$controller-&gt;captcha-&gt;multi_text_color = $this-&gt;_multi_text_color;
		$controller-&gt;captcha-&gt;text_angle_maximum = $this-&gt;_text_angle_maximum;
		$controller-&gt;captcha-&gt;text_angle_minimum = $this-&gt;_text_angle_minimum;
		$controller-&gt;captcha-&gt;text_color = $this-&gt;_text_color;
		$controller-&gt;captcha-&gt;text_maximum_distance = $this-&gt;_text_maximum_distance;
		$controller-&gt;captcha-&gt;text_minimum_distance = $this-&gt;_text_minimum_distance;
		$controller-&gt;captcha-&gt;text_transparency_percentage = $this-&gt;_text_transparency_percentage;
		$controller-&gt;captcha-&gt;text_x_start = $this-&gt;_text_x_start;
		$controller-&gt;captcha-&gt;ttf_file = $this-&gt;_ttf_file;
		$controller-&gt;captcha-&gt;use_gd_font = $this-&gt;_use_gd_font;
		$controller-&gt;captcha-&gt;use_multi_text = $this-&gt;_use_multi_text;
		$controller-&gt;captcha-&gt;use_transparent_text = $this-&gt;_use_transparent_text;
		$controller-&gt;captcha-&gt;use_word_list = $this-&gt;_use_word_list;
		$controller-&gt;captcha-&gt;wordlist_file = $this-&gt;_wordlist_file;
		$controller-&gt;set('captcha',$controller-&gt;captcha);
    }
}

?&gt;
</pre>
<p>Usándolo en un controlador de ejemplo. Por ejemplo en un controlador de contacto.<br />
Yo lo he usado en otros contraladores y con otros bucles de control, pero este os puede resultar útil como ejemplo inicial.</p>
<p>/app/controllers/contacts_controller.php</p>
<pre class="brush: php; title: ;">
&lt;?php 

class ContactsController extends AppController {

    var $name = 'Contacts';
    var $components = array('Captcha');

    function securimage($random_number){
        $this-&gt;autoLayout = false; //a blank layout

        //override variables set in the component - look in component for full list
        $this-&gt;captcha-&gt;image_height = 75;
        $this-&gt;captcha-&gt;image_width = 350;
        $this-&gt;captcha-&gt;image_bg_color = '#ffffff';
        $this-&gt;captcha-&gt;line_color = '#cccccc';
        $this-&gt;captcha-&gt;arc_line_colors = '#999999,#cccccc';
        $this-&gt;captcha-&gt;code_length = 5;
        $this-&gt;captcha-&gt;font_size = 45;
        $this-&gt;captcha-&gt;text_color = '#000000';

        $this-&gt;set('captcha_data', $this-&gt;captcha-&gt;show()); //dynamically creates an image
    }

    function index(){
        $this-&gt;set('captcha_form_url', $this-&gt;webroot.'contacts/index'); //url for the form
        $this-&gt;set('captcha_image_url', $this-&gt;webroot.'contacts/securimage/0'); //url for the captcha image

        $captcha_success_msg = 'The code you entered matched the captcha';
        $captcha_error_msg = 'The code you entered does not match';

        if( empty($this-&gt;data) ){ //form has not been submitted yet
            $this-&gt;set('error_captcha', ''); //error message displayed to user
            $this-&gt;set('success_captcha', ''); //success message displayed to user
            $this-&gt;render(); //reload page
        } else { //form was submitted
            if( $this-&gt;captcha-&gt;check($this-&gt;data['Contact']['captcha_code']) == false ) {
                //the code was incorrect - display an error message to user
                $this-&gt;set('error_captcha', $captcha_error_msg); //set error msg
                $this-&gt;set('success_captcha', ''); //set success msg
                $this-&gt;render(); //reload page
            } else {
                //the code was correct - display a success message to user
                $this-&gt;set('error_captcha', ''); //set error msg
                $this-&gt;set('success_captcha', $captcha_success_msg); //set success msg
                $this-&gt;render(); //reload page

                //after testing is complete, you would process the other form data here and save it
            }
        }
    }
}

?&gt;
</pre>
<p>Crear la vista que renderiza la imagen que se crea dinamicamente<br />
/app/views/contacts/securimage.ctp</p>
<pre class="brush: php; title: ;">
&lt;?php echo $captcha_data; ?&gt;
</pre>
<p>Crear una vista que renderiza el formulario de contacto junto con el captcha de seguridad.<br />
Este es el formulario de ejemplo que hay en la bakery.cakephp.org pero se puede mejorar mucho más. Pero os servirá para haceros una idea.</p>
<pre class="brush: php; title: ;">
&lt;form action=&quot;&lt;?php echo $captcha_form_url; ?&gt;&quot; method=&quot;post&quot;&gt;
&lt;div&gt;Verify :&lt;/div&gt;
&lt;div&gt;&lt;img src=&quot;&lt;?php echo $captcha_image_url; ?&gt;&quot; id=&quot;captcha&quot; alt=&quot;CAPTCHA Image&quot; /&gt;&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;text&quot; name=&quot;data[Contact][captcha_code]&quot; size=&quot;10&quot; maxlength=&quot;6&quot; value=&quot;&quot; /&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;#&quot; onclick=&quot;document.getElementById('captcha').src = '&lt;?php echo $this-&gt;webroot;?&gt;contact/securimage/' + Math.random(); return false&quot;&gt;Reload Image&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;color:red;&quot;&gt;&lt;?php echo $error_captcha; ?&gt;&lt;/div&gt;
&lt;div style=&quot;color:green;&quot;&gt;&lt;?php echo $success_captcha; ?&gt;&lt;/div&gt;
&lt;div&gt;&lt;input type=&quot;submit&quot; value=&quot;CLICK HERE TEST THE CAPTCHA&quot; /&gt;&lt;/div&gt;
&lt;/form&gt;
</pre>
<p>Fuente: http://bakery.cakephp.org</p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> captcha con validacion, formulario de contacto con cakephp, formularios con validacion en cakephp 1 2, implementar captcha en cakephp, Set cakephp post method</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/php/instalar-un-captcha-de-seguridad/' rel='bookmark' title='instalar un captcha de seguridad'>instalar un captcha de seguridad</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/crear-archivos-pdf-con-cakephp/' rel='bookmark' title='Crear archivos PDF con CakePHP'>Crear archivos PDF con CakePHP</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/componente-geo-posicionamiento-ip-con-cakephp/' rel='bookmark' title='componente geo posicionamiento ip con cakephp'>componente geo posicionamiento ip con cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/cakephp-funcion-para-bloquear-ips-y-evitar-spam/' rel='bookmark' title='cakephp funcion para bloquear ips y evitar spam'>cakephp funcion para bloquear ips y evitar spam</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/recortar-imagenes-en-cakephp-con-jquery/' rel='bookmark' title='recortar imagenes en cakephp con jquery.'>recortar imagenes en cakephp con jquery.</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/cakephp/captcha-de-seguridad-en-cakephp-con-securimage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cakephp funcion para bloquear ips y evitar spam</title>
		<link>http://www.pedroventura.com/blog_programacion/cakephp/cakephp-funcion-para-bloquear-ips-y-evitar-spam/</link>
		<comments>http://www.pedroventura.com/blog_programacion/cakephp/cakephp-funcion-para-bloquear-ips-y-evitar-spam/#comments</comments>
		<pubDate>Sun, 22 Aug 2010 22:01:09 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[seguridad]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=1318</guid>
		<description><![CDATA[En este post voy a explicar como hacer una función que bloquea ips de robots o simples usuarios spammers. Para esto mezclaremos la utilización de archivos de configuración donde iremos registrando en un array las ips que queremos bloquear. Lo primero es crear un archivo de configuración que podrá ser utilizado desde cualquier parte de la aplicación. En este archivo de configuración crearemos una variable que contendrá un array con registros de ips. /app/config/ip_block.php &#60;?php $config['Ip']['block'] = array('xxx.xxx.xxx.xxx'); ?&#62; Esta funcionalidad es ideal para ir insertando las ips manualmente, previo análisis. A continuación la función con la lógica que procesa la ip y las busca en el array de ips bloqueadas que hemos definido anteriormente en el archivo de configuración. lo ideal será colocarla en /app/controllers/app_controller.php &#60;? class AppController extends Controller { function __construct() { parent::__construct(); } /** * funcion para bloquear ips. * Esta funcion se puede llamar desde cualquier funcion/controlador para comprobar si una ip está bloqueada. * Las ips bloqueadas se guardan en un array en /app/config/ip_block.php * La funcion simplemente carga el archivo de configuración y le las ips que hay registradas y las comprueba con la ip que enviamos * Si la ip coincide redirigimos [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/linux/firewall-basico-en-linux-para-bloquear-ips-a-servicios-con-hosts-allow-y-hosts-deny/' rel='bookmark' title='firewall básico en linux para bloquear ips a servicios con hosts.allow y hosts.deny'>firewall básico en linux para bloquear ips a servicios con hosts.allow y hosts.deny</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/internet/enviar-que-se-descarguen-tu-web-y-bloquear-otros-crawlers-desde-robots-txt/' rel='bookmark' title='Evitar que se descarguen tu web y bloquear otros crawlers desde robots.txt'>Evitar que se descarguen tu web y bloquear otros crawlers desde robots.txt</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/internet/maldito-spam-se-han-cebado-en-semana-santa/' rel='bookmark' title='Maldito Spam!! Se han cebado en semana santa!!'>Maldito Spam!! Se han cebado en semana santa!!</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/php/como-comprobar-si-existe-una-funcion-en-php/' rel='bookmark' title='Cómo comprobar si existe una función en PHP'>Cómo comprobar si existe una función en PHP</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/php/funcion-en-php-para-limpiar-cadenas-de-texto-en-utf8/' rel='bookmark' title='funcion en php para limpiar cadenas de texto en utf8'>funcion en php para limpiar cadenas de texto en utf8</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>En este post voy a explicar como hacer una función que bloquea ips de robots o simples usuarios spammers.<br />
Para esto mezclaremos la utilización de archivos de configuración donde iremos registrando en un array las ips que queremos bloquear.</p>
<p>Lo primero es crear un archivo de configuración que podrá ser utilizado desde cualquier parte de la aplicación.<br />
En este archivo de configuración crearemos una variable que contendrá un array con registros de ips.<br />
/app/config/ip_block.php</p>
<pre class="brush: php; title: ;">
&lt;?php
$config['Ip']['block'] = array('xxx.xxx.xxx.xxx');
?&gt;
</pre>
<p>Esta funcionalidad es ideal para ir insertando las ips manualmente, previo análisis. </p>
<p>A continuación la función con la lógica que procesa la ip y las busca en el array de ips bloqueadas que hemos definido anteriormente en el archivo de configuración.</p>
<p>lo ideal será colocarla en /app/controllers/app_controller.php</p>
<pre class="brush: php; title: ;">
&lt;?
 class AppController extends Controller
 {

    function __construct()
    {
        parent::__construct();
    }

    /**
    * funcion para bloquear ips.
    * Esta funcion se puede llamar desde cualquier funcion/controlador para comprobar si una ip está bloqueada.
    * Las ips bloqueadas se guardan en un array en /app/config/ip_block.php
    * La funcion simplemente carga el archivo de configuración y le las ips que hay registradas y las comprueba con la ip que enviamos
    * Si la ip coincide redirigimos a la home o donde queramos.
    * Esta funcion se puede usar en una determinada accion o en un controlador entero incluyéndola en el beforeFilter.
    *
    *
    * @param mixed $ip que estamos comprobando
    * @version 1.0
    * @author Pedro Ventura
    */
    function comprobar_ip_block($ip)
    {
        Configure::load('ip_block');
        $array_ips_bloqueadas = Configure::read('Ip');
        /**
        * Formato del array devuelto
        *
        * [block] =&gt; Array
                (
                    [0] =&gt; xxx.xxx.xx.xxx
                    [1] =&gt; xx.xx.xxx.xx
                )
        */
        if(in_array($ip,$array_ips_bloqueadas['block']))
        {
            #ip bloqueada
            $this-&gt;Session-&gt;setFlash(__(&quot;Tu ip ha sido bloqueada para realizar esta accion&quot;,true));
            $this-&gt;redirect(array('controller'=&gt;'mi_controller','action'=&gt;'index'));
        }

    }
}
?&gt;
</pre>
<p>Podemos usar la función anterior llamándola desde cualquier otra función ya que se encuentra en el app_controller.php o incluso para restringir el acceso a un determinado controlador a usuarios spam o a robots que previamente hemos sacado sus ips y añadido en el archivo de configuración, para ello bastaría con añadirlo a la función beforeFilter del controlador.<br />
Si lo que queremos es bloquear las ips a toda la aplicación habrá que añadir la llamada a la función en el beforeFilter del app_controller.php</p>
<pre class="brush: php; title: ;">
function beforeFilter()
  {
        parent::beforeFilter();
       $this-&gt;comprobar_ip_block($_SERVER['REMOTE_ADDR']);
  }
</pre>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> bloquear ip con php, cakephp restringir acceso, comprobar si existe un registro cakephp</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/linux/firewall-basico-en-linux-para-bloquear-ips-a-servicios-con-hosts-allow-y-hosts-deny/' rel='bookmark' title='firewall básico en linux para bloquear ips a servicios con hosts.allow y hosts.deny'>firewall básico en linux para bloquear ips a servicios con hosts.allow y hosts.deny</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/internet/enviar-que-se-descarguen-tu-web-y-bloquear-otros-crawlers-desde-robots-txt/' rel='bookmark' title='Evitar que se descarguen tu web y bloquear otros crawlers desde robots.txt'>Evitar que se descarguen tu web y bloquear otros crawlers desde robots.txt</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/internet/maldito-spam-se-han-cebado-en-semana-santa/' rel='bookmark' title='Maldito Spam!! Se han cebado en semana santa!!'>Maldito Spam!! Se han cebado en semana santa!!</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/php/como-comprobar-si-existe-una-funcion-en-php/' rel='bookmark' title='Cómo comprobar si existe una función en PHP'>Cómo comprobar si existe una función en PHP</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/php/funcion-en-php-para-limpiar-cadenas-de-texto-en-utf8/' rel='bookmark' title='funcion en php para limpiar cadenas de texto en utf8'>funcion en php para limpiar cadenas de texto en utf8</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/cakephp/cakephp-funcion-para-bloquear-ips-y-evitar-spam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Análisis de SEO. Número de paginas indexadas y eliminadas</title>
		<link>http://www.pedroventura.com/blog_programacion/seo/analisis-de-seo-numero-de-paginas-indexadas-y-eliminadas/</link>
		<comments>http://www.pedroventura.com/blog_programacion/seo/analisis-de-seo-numero-de-paginas-indexadas-y-eliminadas/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 23:21:35 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=675</guid>
		<description><![CDATA[Hay que tener cuidado cuando ya tienes tu página indexada y al crear una nueva aplicacion, dejas que el robot de Google indexe muchas urls de golpe esto es considerado como SPAM para los spiders. Esto es la idea básica, claro, pero siempre hay parámetros que considerar. Lo que yo se y he experimentado es que si tienes una web que ya tiene indexada 10.000 urls y al lanzar un especial, o una nueva aplicación en la web, o si insertas nuevos posts (si es un blog) de tal manera que creas 3.000 nuevas urls, es obvio spam. Esto se ve muy claro, pero por lo general no se tiene en cuenta cuando se pone en producción un nuevo desarrollo, aplicación, o lo que sea. La lógica de los robots y los spiders, es que ningún humano puede crear tantas nuevas páginas. Éstos datos son un ejemplo, realmente no se el porcentaje que consideran los robots, pero se que es un punto importante a tener en cuenta cuando ponéis en producción aplicaciones en vuestro site. La solución más fácil que se puede llevar a cabo y no afectar a las fechas de lanzamiento de las aplicaciones y que los usuarios [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/seo/mejoras-seo-para-ofrecer-un-contenido-en-multi-idioma-etiqueta-hreflang/' rel='bookmark' title='Mejoras SEO para ofrecer un contenido en multi-idioma etiqueta hreflang'>Mejoras SEO para ofrecer un contenido en multi-idioma etiqueta hreflang</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/crear-y-usar-plantillas-para-paginas-de-wordpress/' rel='bookmark' title='Crear y usar plantillas para páginas de WordPress'>Crear y usar plantillas para páginas de WordPress</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/seo/plugin-cache-en-wordpress-mejora-la-velocidad-de-tu-blog-y-el-seo/' rel='bookmark' title='plugin cache en wordpress. Mejora la velocidad de tu blog… y el SEO'>plugin cache en wordpress. Mejora la velocidad de tu blog… y el SEO</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/mostrar-el-numero-de-lineas-en-vi/' rel='bookmark' title='Mostrar el número de lineas en vi'>Mostrar el número de lineas en vi</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/enviar-un-correo-via-telnet-desde-consola-linux/' rel='bookmark' title='Enviar un correo via telnet desde consola linux'>Enviar un correo via telnet desde consola linux</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Hay que tener cuidado cuando ya tienes tu página indexada y al crear una nueva aplicacion, dejas que el robot de Google indexe muchas urls de golpe esto es considerado como SPAM para los spiders.</p>
<p>Esto es la idea básica, claro, pero siempre hay parámetros que considerar.<br />
Lo que yo se y he experimentado es que si tienes una web que ya tiene indexada 10.000 urls y al lanzar un especial, o una nueva aplicación en la web, o si insertas nuevos posts (si es un blog) de tal manera que creas 3.000 nuevas urls, es obvio spam. Esto se ve muy claro, pero por lo general no se tiene en cuenta cuando se pone en producción un nuevo desarrollo, aplicación, o lo que sea.<br />
La lógica de los robots y los spiders, es que ningún humano puede crear tantas nuevas páginas. </p>
<p>Éstos datos son un ejemplo, realmente no se el porcentaje que consideran los robots, pero se que es un punto importante a tener en cuenta cuando ponéis en producción aplicaciones en vuestro site.</p>
<p>La solución más fácil que se puede llevar a cabo y no afectar a las fechas de lanzamiento de las aplicaciones y que los usuarios puedan visualizar y usar las nuevas aplicaciones o herramientas es deshabilitaras desde el <em>robots.txt</em>, impidiendo el acceso y la indexación de estas nuevas aplicaciones, y posteriormente ir poco a poco habilitándolas.</p>
<pre class="brush: xml; title: ;">
User-agent: *
Disallow: /mi_nueva_aplicacion
Disallow: /otra_aplicacion
Disallow: /nueva_galeria_fotos
</pre>
<p>También ocurre al contrario, cuando elimináis muchas urls.<br />
Esto me ha pasado en mexame. He tenido que eliminar 3 usuarios que habían posteado unas 1000 urls con noticias spam. Al borrar los usuarios y eliminar todas sus noticias y comentarios los robots me han penalizado bastante, tanto que el porcentaje de visitas ha caído mas del 40% (es posible que también por otros factores), pero un desastre.</p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> numero de paginas web 2010, numero de paginas web en el mundo, cantidad de paginas web en el mundo, 26 páginas indexadas, seo paginas indexadas</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/seo/mejoras-seo-para-ofrecer-un-contenido-en-multi-idioma-etiqueta-hreflang/' rel='bookmark' title='Mejoras SEO para ofrecer un contenido en multi-idioma etiqueta hreflang'>Mejoras SEO para ofrecer un contenido en multi-idioma etiqueta hreflang</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/wordpress/crear-y-usar-plantillas-para-paginas-de-wordpress/' rel='bookmark' title='Crear y usar plantillas para páginas de WordPress'>Crear y usar plantillas para páginas de WordPress</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/seo/plugin-cache-en-wordpress-mejora-la-velocidad-de-tu-blog-y-el-seo/' rel='bookmark' title='plugin cache en wordpress. Mejora la velocidad de tu blog… y el SEO'>plugin cache en wordpress. Mejora la velocidad de tu blog… y el SEO</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/mostrar-el-numero-de-lineas-en-vi/' rel='bookmark' title='Mostrar el número de lineas en vi'>Mostrar el número de lineas en vi</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/enviar-un-correo-via-telnet-desde-consola-linux/' rel='bookmark' title='Enviar un correo via telnet desde consola linux'>Enviar un correo via telnet desde consola linux</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/seo/analisis-de-seo-numero-de-paginas-indexadas-y-eliminadas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>instalar un captcha de seguridad</title>
		<link>http://www.pedroventura.com/blog_programacion/php/instalar-un-captcha-de-seguridad/</link>
		<comments>http://www.pedroventura.com/blog_programacion/php/instalar-un-captcha-de-seguridad/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 21:40:54 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[librerias y funciones]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/blog_programacion/?p=18</guid>
		<description><![CDATA[¿Cómo instalar un buen captcha de Seguridad? Pasos para implementar reCAPTCHA http://recaptcha.net/ 1.- ¿Qué es reCAPTHCA? 2.- Manual de instalación de reCAPTCHA 3.- Personalizacion del theme 1.- ¿Que es CAPTCHA? Captcha es el acrónimo de Completely Automated Public Turing test to tell Computers and Humans Apart (Prueba de Turing pública y automática para diferenciar a máquinas y humanos). Este es un típico test para la secuencia &#8220;smwm&#8221; que dificulta el reconocimiento de la máquina rotando las letras y añadiendo un gradiente de fondoSe trata de una prueba desafío-respuesta utilizada en computación para determinar cuándo el usuario es o no humano. El término se empezó a utilizar en el año 2000 por Luis von Ahn, Manuel Blum y Nicholas J. Hopper de la Carnegie Mellon University, y John Langford de IBM. La típica prueba consiste en que el usuario introduzca un conjunto de caracteres que se muestran en una imagen distorsionada que aparece en pantalla. Se supone que una máquina no es capaz de comprender e introducir la secuencia de forma correcta por lo que solamente el humano podría hacerlo (salvo error). Como el test es controlado por una máquina en lugar de un humano como en la Prueba de Turing, [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/cakephp/captcha-de-seguridad-en-cakephp-con-securimage/' rel='bookmark' title='Captcha de seguridad en cakePHP con Securimage'>Captcha de seguridad en cakePHP con Securimage</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/seguridad-en-linux-instalar-chkrootkit/' rel='bookmark' title='Seguridad en Linux. Instalar chkrootkit'>Seguridad en Linux. Instalar chkrootkit</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/php/instalar-phpmyadmin/' rel='bookmark' title='Instalar phpmyadmin'>Instalar phpmyadmin</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/jquery-activar-desactivar-boton-submit-de-formulario/' rel='bookmark' title='Jquery activar desactivar boton submit de formulario'>Jquery activar desactivar boton submit de formulario</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/php/comprobar-extensiones-de-una-imagen-subida-con-php/' rel='bookmark' title='Obtener la extension de un archivo subido con php'>Obtener la extension de un archivo subido con php</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: large;"><strong><span style="font-size: large;">¿Cómo instalar un buen captcha de Seguridad?</span></strong></span></p>
<p><span style="font-size: large;"><strong><span style="font-size: large;"> Pasos para implementar reCAPTCHA</span></strong></span></p>
<p><a title="http://recaptcha.net/" rel="nofollow" href="http://recaptcha.net/" target="_blank">http://recaptcha.net/</a></p>
<p><span style="font-size: large;"><strong><span style="font-size: large;"><br />
<span style="font-size: small;">1.- ¿Qué es reCAPTHCA?<br />
</span></span></strong></span><span style="font-size: large;"><strong><span style="font-size: large;"><span style="font-size: small;">2.- Manual de instalación de reCAPTCHA<br />
3.- Personalizacion del theme<br />
</span></span></strong></span><span style="font-size: large;"><strong><span style="font-size: large;"><br />
</span></strong></span></p>
<p><span style="font-size: large;"><strong><br />
<span style="font-size: medium;"><a rel="nofollow" href="http://es.wikipedia.org/wiki/Captcha">1.- ¿Que es CAPTCHA?</a></span></strong></span></p>
<p><a rel="facybox" rel="nofollow" href="http://bp2.blogger.com/_zpjo6lgVmM8/SBeaG43i3tI/AAAAAAAAAsI/ObfrGBB0niI/s1600-h/formulario-tipico.jpg"><img id="BLOGGER_PHOTO_ID_5194790138330406610" src="http://bp2.blogger.com/_zpjo6lgVmM8/SBeaG43i3tI/AAAAAAAAAsI/ObfrGBB0niI/s400/formulario-tipico.jpg" border="0" alt="" /></a></p>
<p>Captcha es el acrónimo de Completely Automated Public Turing test to tell Computers and Humans Apart (Prueba de Turing pública y automática para diferenciar a máquinas y humanos).</p>
<p>Este es un típico test para la secuencia &#8220;smwm&#8221; que dificulta el reconocimiento de la máquina rotando las letras y añadiendo un gradiente de fondoSe trata de una prueba desafío-respuesta utilizada en computación para determinar cuándo el usuario es o no humano. El término se empezó a utilizar en el año 2000 por Luis von Ahn, Manuel Blum y Nicholas J. Hopper de la Carnegie Mellon University, y John Langford de IBM.</p>
<p>La típica prueba consiste en que el usuario introduzca un conjunto de caracteres que se muestran en una imagen distorsionada que aparece en pantalla. Se supone que una máquina no es capaz de comprender e introducir la secuencia de forma correcta por lo que solamente el humano podría hacerlo (salvo error).</p>
<p>Como el test es controlado por una máquina en lugar de un humano como en la Prueba de Turing, también se denomina Prueba de Turing Inversa.</p>
<p>Los Captchas son utilizados para evitar que robots, también llamados spambots, puedan utilizar ciertos servicios. Por ejemplo, para que no puedan participar en encuestas, registrarse para usar cuentas de correo electrónico (o su uso para envío de correo basura) o, más recientemente, para evitar que correo basura pueda ser enviado por un robot (el remitente debe pasar el test antes de que se entregue al destinatario).</p>
<p><strong><a rel="nofollow" href="http://recaptcha.net/plugins/php/">reCAPTCHA</a></strong><br />
<strong>PLUGIN GRATIS ANTI SPAMBOTS</strong></p>
<p><a rel="facybox" rel="nofollow" href="http://bp2.blogger.com/_zpjo6lgVmM8/SBeYg43i3rI/AAAAAAAAAr4/x3KhIkM_cf0/s1600-h/recaptcha.jpg"><img id="BLOGGER_PHOTO_ID_5194788385983749810" style="border: 0pt none;" src="http://bp2.blogger.com/_zpjo6lgVmM8/SBeYg43i3rI/AAAAAAAAAr4/x3KhIkM_cf0/s400/recaptcha.jpg" border="0" alt="" width="400" height="305" /></a></p>
<p>Existen tres formas de uso reCAPTCHA: mediante un plugin de aplicación, utilizando una biblioteca para su lenguaje de programación, y el uso de la web basados en la API. Los siguientes recursos le ayudará a encontrar el método correcto para su entorno.</p>
<p><strong>Cliente API</strong><br />
El cliente API guía describe cómo personalizar el comportamiento de la reCAPTCHA widget en su sitio. Esta guía se aplica a todos los plugins.<br />
Entorno de programación plugins<br />
•<a rel="nofollow" href="http://recaptcha.net/plugins/php/">PHP </a><br />
•<a rel="nofollow" href="http://recaptcha.net/plugins/aspnet/">ASP.NET</a><br />
•Classic ASP: véase este <a rel="nofollow" href="http://groups.google.com/group/recaptcha/msg/187b6f7a32f4cbe4">foro</a><br />
•<a rel="nofollow" href="http://python.org/pypi/recaptcha-client">Python </a>•Perl (aportados por Andy Armstrong)<br />
•<a rel="nofollow" href="http://www.loonsoft.com/recaptcha/">Ruby</a> (aportados por McClain Looney)<br />
•Otro <a rel="nofollow" href="http://svn.ambethia.com/pub/rails/plugins/recaptcha/">Ruby</a> biblioteca de Jason Perry L<br />
•<a rel="nofollow" href="http://code.google.com/p/recaptcha/downloads/list?q=label:java-Latest">Java</a> (aportados por Soren)<br />
•<a rel="nofollow" href="http://recaptcha.riaforge.org/">ColdFusion</a> (aportados por Robin Hilliard)</p>
<p><strong>Aplicación complementos </strong><br />
•<a rel="nofollow" href="http://recaptcha.net/plugins/wordpress/">WordPress </a><br />
•<a rel="nofollow" href="http://recaptcha.net/plugins/mediawiki/">MediaWiki</a><br />
•<a rel="nofollow" href="http://recaptcha.net/plugins/phpbb/">phpBB</a><br />
•Movable Type (aportados por Josh Carter)<br />
•<a rel="nofollow" href="http://drupal.org/project/recaptcha">Drupal</a> (aportados por Rob Loach)<br />
•<a rel="nofollow" href="http://trac.symfony-project.com/trac/wiki/sfReCaptchaPlugin">Symfony</a> (aportado por Arthur Koziel)<br />
•<a rel="nofollow" href="http://typo3.org/extensions/repository/view/jm_recaptcha/">Typo3</a> (aportados por Jens Mittag. Véase también el ejemplo de utilizar el plugin)<br />
•<a rel="nofollow" href="http://lordmatt.co.uk/item/812/">NucleusCMS</a> (aportados por Matt)<br />
•<a rel="nofollow" href="http://www.vbulletin.org/forum/showthread.php?t=151824">vBulletin</a> (aportados por Magnus)<br />
•<a rel="nofollow" href="http://extensions.joomla.org/component/option,com_mtree/task,viewlink/link_id,2866/Itemid,35/">Joomla</a> (aportados por Robert van den Breemen)<br />
•<a rel="nofollow" href="http://code.google.com/p/mailhide-tag/">Mailhide JSP</a> (por Tamas Magyar)</p>
<p><strong>Documentación API </strong><br />
Estos documentos describen el bajo nivel <a rel="nofollow" href="http://recaptcha.net/apidocs/captcha/">reCAPTCHA API</a>.  Usted debe de referencia estos documentos si está creando un nuevo plugin</p>
<p><strong>Comunidad </strong><br />
<a rel="nofollow" href="http://209.85.171.104/translate_c?hl=es&amp;langpair=en%7Ces&amp;u=http://groups.google.com/group/recaptcha/topics">reCAPTCHA Foro</a>: un lugar donde usted puede hacer preguntas sobre reCAPTCHA y complementos</p>
<p><a rel="nofollow" href="http://209.85.171.104/translate_c?hl=es&amp;langpair=en%7Ces&amp;u=http://wiki.recaptcha.net/">reCAPTCHA Wiki</a>: un lugar para publicar cualquier información relacionada con la reCAPTCHA</p>
<p><a rel="nofollow" href="http://209.85.171.104/translate_c?hl=es&amp;langpair=en%7Ces&amp;u=http://code.google.com/p/recaptcha/">reCAPTCHA en Google Code</a>: muchos plugins que se desarrollan.  Pregúntele a nosotros para acceder a ellos.</p>
<p><strong> <span style="font-size: large;">2.- MANUAL DE INSTALACION reCAPTCHA</span></strong></p>
<p><strong>Paso 1: Registrarse en reCAPTCHA</strong></p>
<p>Nos tenemos que dirigir a <a rel="nofollow" href="http://recaptcha.net/" target="_blank">http://recaptcha.net/</a> y registrarnos como usuarios. Nos solicitarán unos pocos datos personales para darnos de alta.</p>
<p>Una vez registrados debemos obtener unas claves para utilizar el sistema de captcha. Estas claves son específicas para cada dominio donde quieras utilizarlo. Las claves no son más que una llave pública y otra privada, que utilizaremos luego para poner la captcha en nuestra web.</p>
<p>Son algo como esto:</p>
<p>Public Key: 5LfCABCDEFGHIJUNDSBOejHq-5n5StSWawBpCAMX<br />
Private Key: 6LfCAAAFHJSDFGHHJHDeju3a-Z5lomjShHKaGh9g</p>
<p>Esas claves son, lógicamente, secretas y debemos mantenerlas así. Las claves anteriores son de ejemplo.</p>
<p>En el sitio de reCAPTCHA tendremos que descargarnos unos códigos PHP con una librería PHP para poner en nuestro servidor y unos ejemplos de uso del sistema. Esto lo podemos conseguir en el apartado &#8220;Resources&#8221;. Veremos que tienen un plugin o librería para trabajar con PHP, que además está perfectamente documentado.</p>
<p>Una vez descargado el zip que contiene la librería PHP, la tenemos que poner en algún lugar de nuestro servidor. Recuerda luego donde la has puesto, porque tendrás que hacer un include con PHP de esa librería.</p>
<p>Por ejemplo, podríamos colocar dicha librería en el mismo directorio donde está la página PHP que va a hacer uso de ella. Entonces la incluiríamos con algo como esto:</p>
<pre class="brush: php; title: ;">
require_once('recaptchalib.php');
</pre>
<p><strong>Paso 2: Incluir el captcha en el formulario</strong></p>
<p>En la librería descargada (&#8216;recaptchalib.php&#8217;) Hay una función que sirve para mostrar la captcha. Simplemente tenemos que llamarla con los parámetros correctos. La función devuelve el código HTML que tenemos que colocar en la página para que se vea la captcha.</p>
<pre class="brush: php; title: ;">
recaptcha_get_html($captcha_publickey, $error_captcha);
</pre>
<p>Los parámetros que recibe son la llave pública que conseguimos anteriormente y un código de error, que es opcional. Luego veremos de dónde podría venir ese código de error.</p>
<p>El código del formulario sería algo como esto:</p>
<pre class="brush: php; title: ;">
&lt;?
require_once('recaptchalib.php');
//Llaves de la captcha
$captcha_publickey = &quot;xxxxxxxxxxxxxxxxxxxxxxx&quot;;
$captcha_privatekey = &quot;yyyyyyyyyyyyyyyyyyyyyy&quot;;
//por ahora ponemos a null el error de la captcha
$error_captcha=null;
?&gt;

&lt;form action=&quot;miejemplo_formulario.php&quot; method=&quot;post&quot;&gt;
Nombre: &lt;input type=&quot;text&quot; name=&quot;nombre&quot; size=&quot;30&quot;&gt;
Edad: &lt;input type=&quot;text&quot; name=&quot;edad&quot; size=&quot;3&quot;&gt;
&lt;br&gt;
&lt;?
//escribimos en la página lo que nos devuelve recaptcha_get_html()
echo recaptcha_get_html($captcha_publickey, $error_captcha);
?&gt;
&lt;br&gt;
&lt;input type=&quot;submit&quot; value=&quot;Enviar&quot;&gt;
&lt;/form&gt;
</pre>
<p><strong>Paso 3: Validar la captcha</strong></p>
<p>Existe otra función para validar la captcha, llamada recaptcha_check_answer(). Esta función recibe también varios parámetros: La llave privada, la IP del usuario, y dos campos que contienen los valores que envía la captcha dentro del formulario $_POST["recaptcha_challenge_field"] y $_POST["recaptcha_response_field"].</p>
<p>Esta función devuelve un objeto que tiene dos propiedades:</p>
<p>is_valid, un boleano para decir si es se ha validado correctamente la captcha. error, un código de error que especifica qué ha ido mal si no se validó correctamente el texto.</p>
<p>Podríamos validar la captcha con algo como esto:</p>
<pre class="brush: php; title: ;">
&lt;?php
$captcha_respuesta = recaptcha_check_answer ($captcha_privatekey,
$_SERVER[&quot;REMOTE_ADDR&quot;],
$_POST[&quot;recaptcha_challenge_field&quot;],
$_POST[&quot;recaptcha_response_field&quot;]);
if ($captcha_respuesta-&gt;is_valid) {
//todo correcto
//hacemos lo que se deba hacer una vez recibido el formulario válido
}else{
//El código de validación de la imagen está mal escrito.
$error_captcha = $captcha_respuesta-&gt;error;
}
?&gt;
</pre>
<p>Llamamos a la función recaptcha_check_answer() enviando los parámetros comentados y guardamos el valor devuelto por la función en la variable $captcha_respuesta.</p>
<p>Luego comprobamos si el atributo $captcha_respuesta-&gt;is_valid es true. En ese caso sabemos que el texto escrito de la imagen se ha validado correctamente y hacemos lo que haya que hacer en el formulario.</p>
<p>Si $captcha_respuesta-&gt;is_valid era falso, entonces quiere decir que no estaba bien escrito el texto de la imagen. Podemos entonces actualizar la variable $error_captcha para que cuando mostremos de nuevo la captcha podamos pasarle el error generado y que avise al usuario.</p>
<p>Tenemos nuestra captcha funcionando!</p>
<p>El código completo de este ejemplo es el siguiente:</p>
<pre class="brush: php; title: ;">
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Página con formulario protegido por captcha&lt;/title&gt;
&lt;/head&gt;&lt;/span&gt;

&lt;body&gt;
&lt;?
require_once('recaptchalib.php');
//Llaves de la captcha
$captcha_publickey = &quot;xxxxxxxxxxxxxxxxxxxxxxx&quot;;
$captcha_privatekey = &quot;yyyyyyyyyyyyyyyyyyyyy&quot;;
$error_captcha=null;

if ($_POST){
$captcha_respuesta = recaptcha_check_answer ($captcha_privatekey,
$_SERVER[&quot;REMOTE_ADDR&quot;],
$_POST[&quot;recaptcha_challenge_field&quot;],
$_POST[&quot;recaptcha_response_field&quot;]);
if ($captcha_respuesta-&gt;is_valid) {
//todo correcto
//hacemos lo que se deba hacer una vez recibido el formulario válido
echo &quot;Todo correcto!&quot;;
}else{
//El código de validación de la imagen está mal escrito.
echo &quot;Has escrito mal el texto&quot;;
$error_captcha = $captcha_respuesta-&gt;error;
}
}
?&gt;

&lt;form action=&quot;miejemplo_formulario.php&quot; method=&quot;post&quot;&gt;
Nombre: &lt;input type=&quot;text&quot; name=&quot;nombre&quot; size=&quot;30&quot;&gt;
&lt;br&gt;
Edad: &lt;input type=&quot;text&quot; name=&quot;edad&quot; size=&quot;3&quot;&gt;
&lt;br&gt;
&lt;?
//escribimos en la página lo que nos devuelve recaptcha_get_html()
echo recaptcha_get_html($captcha_publickey, $error_captcha);
?&gt;
&lt;br&gt;
&lt;input type=&quot;submit&quot; value=&quot;Enviar&quot;&gt;
&lt;/form&gt;

&lt;/body&gt;
&lt;/html&gt;
</pre>
<p><span style="font-size: large;">3.-PERSONALIZACION DEL THEME</span></p>
<p>Lo importante son la configuración inicial mediante la variable RecaptchaOptions, las funciones de javascript para las distintas acciones(Recaptcha.reload(), Recaptcha.switch_type(&#8216;audio&#8217;), Recaptcha.showhelp()), el id del div donde va el captcha (recaptcha_image) y el input donde se escribe el captcha</p>
<pre class="brush: xml; title: ;">&lt;input type=&quot;text&quot; id=&quot;recaptcha_response_field&quot; name=&quot;recaptcha_response_field&quot; /&gt;</pre>
<pre class="brush: xml; title: ;">
&lt;script&gt;
     var RecaptchaOptions = {
        theme: 'custom',
        lang: 'es',
        custom_theme_widget: 'frm_recpatcha'
     };
 &lt;/script&gt;
 &lt;div class=&quot;frm_recpatcha&quot;&gt;
 &lt;div class=&quot;frm_recaptcha_img&quot; id=&quot;recaptcha_image&quot; &gt;
    &lt;img width=&quot;307&quot; height=&quot;55&quot; alt=&quot;Captcha&quot; title=&quot;Captcha&quot; class=&quot;captcha&quot; src=&quot;/img/recaptcha.gif&quot; alt=&quot;RECAPTCHA&quot; /&gt;
 &lt;/div&gt;

 &lt;img src=&quot;/imgs/recaptcha_buttons.gif&quot; width=&quot;26&quot; height=&quot;57&quot; alt=&quot;Captcha&quot; title=&quot;Captcha&quot; style=&quot;float:left;margin:0 auto; display:block;&quot; /&gt;
 &lt;p style=&quot;margin:5px 10px;&quot;&gt;&lt;a href=&quot;javascript:Recaptcha.reload()&quot; class=&quot;azul&quot;&gt;Recargar&lt;/a&gt;&lt;/p&gt;
 &lt;p style=&quot;margin:5px 10px;&quot;&gt;&lt;a href=&quot;javascript:Recaptcha.switch_type('audio')&quot; class=&quot;azul&quot;&gt;Audio&lt;/a&gt;&lt;/p&gt;
 &lt;p style=&quot;margin:5px 10px;&quot;&gt;&lt;a href=&quot;javascript:Recaptcha.showhelp()&quot;  class=&quot;azul&quot;&gt;Ayuda&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;&lt;label style=&quot;&quot;&gt;Introduce las 2 palabras de la imagen:&lt;/label&gt;&lt;/p&gt;
 &lt;input type=&quot;text&quot; id=&quot;recaptcha_response_field&quot; name=&quot;recaptcha_response_field&quot; name=&quot;#&quot; maxlength=&quot;100&quot; class=&quot;intro_captcha&quot; /&gt;
&lt;?php
echo recaptcha_get_html($captcha_publickey, $error_captcha);
?&gt;
</pre>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> captcha javascript, como poner un captcha, poner captcha, poner captcha en mi web, tengo un formulario sin capchas y quiero crearlo, poner captcha en formulario, poner el captcha, recaptcha html, phpbb poner recaptcha en registro, introducir captcha en html</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/cakephp/captcha-de-seguridad-en-cakephp-con-securimage/' rel='bookmark' title='Captcha de seguridad en cakePHP con Securimage'>Captcha de seguridad en cakePHP con Securimage</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/seguridad-en-linux-instalar-chkrootkit/' rel='bookmark' title='Seguridad en Linux. Instalar chkrootkit'>Seguridad en Linux. Instalar chkrootkit</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/php/instalar-phpmyadmin/' rel='bookmark' title='Instalar phpmyadmin'>Instalar phpmyadmin</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/jquery-activar-desactivar-boton-submit-de-formulario/' rel='bookmark' title='Jquery activar desactivar boton submit de formulario'>Jquery activar desactivar boton submit de formulario</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/php/comprobar-extensiones-de-una-imagen-subida-con-php/' rel='bookmark' title='Obtener la extension de un archivo subido con php'>Obtener la extension de un archivo subido con php</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/php/instalar-un-captcha-de-seguridad/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (Feed is rejected)
Page Caching using disk: enhanced
Database Caching 53/145 queries in 0.458 seconds using disk: basic
Object Caching 2438/2649 objects using disk: basic
Content Delivery Network via Amazon Web Services: S3: blogpv2011.s3.amazonaws.com

Served from: www.pedroventura.com @ 2012-02-06 21:20:17 -->
