Desde que empecé a postear en mi blog he sufrido múltiples ataques afortundamente he podido repelerlos todos gracias a una serie de plugins para WordPress sin embargo estas mismas funciones es posible incluirlas en nuestros scripts, veamos algunas formas:

No permitir HTML

Nada más molesto que ser bombardeado por cientos de mensajes llenos de código basura, con links para comprar viagra (creo que no lo necesito), ofertas de mil cosas he incluso mensajes en árabe que llenan de links y código malicioso en los peores casos añaden javascript que invocan banners de propaganda o intentan descargarla algún troyano a nuestros visitantes lo mejor para prevenirlos es no permitir el uso de código HTML para eso podemos usar una muy útil función de PHP que es strip_tags y se usa de la siguiente forma:

1
2
3
4
5
//// Para eliminar todo rastro de html seria
$text = '<p>mi codigo html</p><a href="#fragment">Other text</a>';
echo strip_tags($text);
//// Para permitir el uso solo de <p> y <b>
echo strip_tags($text, '<p><b>');

Existen formas más elaborados usando PHP purifier por ejemplo pero por lo general no requerimos un script tan pesado y con strip_tags basta.

Usar un código de seguridad

Más conocido como captcha podemos colocar nuestra letras como si fueran un gráfico un poco distorcionado y así prevenir que robots posteen, hay algunos detalles que debemos tomar en cuenta primero que el código se debe verificar al momento de enviar el formulario y al recibir los datos ya que los robots suelen no usar el formulario y saltarse toda validación javascript, hay muchas opciones de captcha basta buscar en google pero siempre tomando en cuenta que el código sea lo suficientemente comprensible para un humano.

Bloquear IP

Esta es una de las formas más radicales de prevenir spam ya que los robots suelen venir de algunos ip que no varían al bloquearlos se disminuye el spam pero cuidado porque podriamos estar bloqueando a todo un grupo de usuarios que estén bajo un mismo IP público.
Para esto en PHP verificamos el IP de nuestro visitante

1
2
3
4
5
6
7
8
<?php $ip = $_SERVER['REMOTE_ADDR'];
//// Hacemos un array de ips baneadas
$ips_baneadas = array('10.0.0.1',’192.0.0.1’);  
$contador = count($ips_baneadas);  
//// Verificamos si el visitante esta baneado
for ($i=0; $i<$contador; $i++) {  
if($ip == $ips_baneadas[$i]) { die("Lo sentimos, estas baneado . $ip"); } } ?>  
?>

Y bueno esas son las formas más usuales de prevenir spam aunque les aseguro que no son 100% seguras digamos que son un 99% seguras combinadas asi que siempre quedará algo que debamos borrar manualmente por lo que no esta demás poner alguna opción que diga «denunciar» para eliminar algún comentario malicioso.