Morton 11 de agosto de 2014 a las 09.45
   Imprimir artículo
elWebmaster.com

WordPress: Cómo detener el spam en tus comentarios


wordpress-wideSeguro que si tienes un blog o sitio web hecho con WordPress, sufres el mismo problema contra el que todos luchamos a diario: miles de comentarios llenos de spam por día. Aquí te acercamos un truco para lograr que esto deje de suceder de una buena vez.

El primer paso es desactivar todos los plugins anti-spam si tenemos m√°s de uno, ya que pueden estar anul√°ndose entre ellos. Para lo siguiente, necesitaremos a√Īadir algunas comprobaciones. No podemos simplemente agregar inputs en el lado del servidor, son outputs a la p√°gina y el boy puede leerlos e invadirlos.¬† Creando esos campos del lado del cliente elimina los bots m√°s b√°sicos. Puedes agregar los campus del formulario con Java Script y apostar a eso. Pero antes, vamos a implementar la comprobaci√≥n de bloqueo de spam del lado del servidor.

Antes de aceptar un comentario de ese lado, necesitaremos comprobar la presencia de la llave din√°mica. Todos lo que necesitamos es un check de isset:

function preprocess_new_comment($commentdata) {
	if(!isset($_POST['is_legit'])) {
		die('You are bullshit');
	}
	return $commentdata;
}
if(function_exists('add_action')) {
	add_action('preprocess_comment',
 'preprocess_new_comment');
}

Si el check falla, el comentario es rechazado (por supuesto, esto significa que si los usuarios sin soporte de JavaScript ver√°n sus comentarios rechazados). Si la llave no est√° definida, rechazamos completamente el comentario.

La respuesta simple aquí es usar JavaScript básico para inyectar los campos del formulario, y dado que cada framework JS tiene su propia sintaxis, habrá que adaptarlo. Agregando dicho campo por sobre la carga de la página se ve algo sospechoso, por lo cual puede ser endeble al ataque de un bot inteligente.

Si los comentarios de tu sitio son enviados a trav√©s de AJAX, a√Īade el campo secreto dentro de c√≥digo Javascript:

var form = $('comment-form');

new Request({
    url: form.action,
    method: 'post',
    onRequest: function() {},
    onSuccess: function(content) {},
    onComplete: function() {}
  }).send(form.toQueryString() + '&is_legit=1');
});

Eso fue todo ¬°Esperamos que te sea de utilidad!

Fuente original del artículo: David Walsh Blog
Traducción realizada por
elWebmaster.com


Enviar a Del.icio.us Enviar a Meneame Enviar a Digg Enviar a Fresqui Enviar a Enchilame

Deja tu opinión

© 2007 - 2008 elWebmaster.com | Powered by Wordpress | Diseño CSS y XHTML válido. | Algunos íconos basados en FamFamFam Mini
Acceder