Foros del Web » Programando para Internet » PHP »

spam en libro visitas en php

Estas en el tema de spam en libro visitas en php en el foro de PHP en Foros del Web. Hola, no se muy bien si mi consulta va en este foro, pero si alguien me ayuda le estaria muy agradecido. Tengo una web con ...
  #1 (permalink)  
Antiguo 12/09/2006, 04:22
 
Fecha de Ingreso: mayo-2005
Mensajes: 12
Antigüedad: 19 años
Puntos: 1
spam en libro visitas en php

Hola, no se muy bien si mi consulta va en este foro, pero si alguien me ayuda le estaria muy agradecido.
Tengo una web con un libro de visitas hecho por mi en php y mysql, que funciona perfectamente sin problemas desde hace 1 año, pero ahora me estan entrando mensajes spam al libro de visitas, la semana pasada me entraron 3 mensajes, pero no le di importancia, pero de ayer a hoy me han entrado 60 de golpe.
En mi libro de visitas no tengo ninguna seguridad, la gente escribe su mensaje en un formulario normal y lo publica. Como podria hacer para que no me entrasen tantos spam de golpe? Tiene alguna solucion?
Gracias
  #2 (permalink)  
Antiguo 12/09/2006, 04:29
 
Fecha de Ingreso: septiembre-2006
Ubicación: España
Mensajes: 19
Antigüedad: 17 años, 7 meses
Puntos: 0
Hola Morogoku,

Yo tengo una solución que tengo probada y me da buen resultado. Es un script que analiza una cadena frente a un array de expresiones prohibidas, y si encuentra alguna de ellas devuelve un valor "false":

1. Te creas un archivo .inc que contenga el siguiente código:

<?php

$prohibidos[] = "http";
$prohibidos[] = "buy";
$prohibidos[] = "casino";
$prohibidos[] = "roulette";
$prohibidos[] = "xanax";
$prohibidos[] = "viagra";
$prohibidos[] = "href";
$prohibidos[] = "cool";

$num_prohibidos = count($prohibidos);

function comprobar_prohibidos($cadena) {

global $prohibidos, $num_prohibidos;

$estado = true;

$k = 0;
while ( $k < $num_prohibidos ) {
if ( stristr($cadena,$prohibidos[$k]) ) {
$estado = false;
break;
}
$k++;
}

return $estado;

}

?>


Como ves puedes ampliar el array de cadenas prohibidas


2. En tu script que recibe el resultado del formulario pones, antes que cualquier otra cosa:

include "./prohibidos_spam_formularios.inc";
if ( !comprobar_prohibidos($comentarios) ) {
exit;
}


De esta forma si alguien trata de insertar contenido prohibido se encuentra con una página en blanco (detención del script).

Esta comprobación, que está puesta como ejemplo para la cadena $comentarios puedes repetirla para tantas cadenas como quieras ($titulo, $texto, etc.).

Espero que sea de ayuda.

Un saludo,

---
Pedro Alcántara Martín
http://www.tarsis.net/
  #3 (permalink)  
Antiguo 12/09/2006, 08:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Si te entran "tantos" mensajes "de golpe" .. tal vez estás sufriendo un uso "remoto" de tu script .. lo cual hace que se pueda "automatizar" mucho la taréa de insertar mensajes en forma externa en tu sistema.

Una forma bastante efectiva de controlar este tema es usando sesiones. Es decir .. creas una variable de sesión en el script que contiene tu formulario y la validas (su existencia) en el script que procesas y haces tu "insert" de datos a tus BBDD o como lo gestiones.

Algo más avanzado al respecto es la técnica de "captcha" (hay una faq en el foro que trata el tema) donde el usuario "humano" debe ver un código en un "grafico" e insertarlo junto con su mensaje a la hora de publicar algo.

Por otro lado .. habría que revisar tu sistema (código) .. es típico el error de dejar el proceso con un mensaje de salida (de exito) cuando haces tu "insert" de datos en el mismo script que lo procesa, de esta forma si el usuario mal intencionado recarga la página .. fácilmente genera entradas repetidas en tus BBDD o similar rápidamente.

Luego puedes validar ciertas palabras y bloquearlas .. Pero realmente este tipo de validaciones son de lo más simple de saltarse por el "SPAMer" humano que esté frente a tu formulario jodiendote.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 13/09/2006, 01:56
 
Fecha de Ingreso: septiembre-2006
Ubicación: España
Mensajes: 19
Antigüedad: 17 años, 7 meses
Puntos: 0
Los spammers utilizan debilidades de los formularios para intentar utilizarlos como plataformas para spammear a terceros. Para ello utilizan generalmente bots, no humanos, porque lo que les sale rentable son los métodos de fuerza bruta --no el trabajo fino-- y los envíos masivos --no el enviar mensajes uno a uno--.

Generalmente hay un bot de descubrimiento del formulario y sus posibles debilidades y otro que utiliza la info del anterior para tratar de enviar masivamente a través de él.

Los métodos de exclusión de palabras generalmente dan un buen resultado porque no van a mirar script por script (si lo hicieran captcha tampoco valdría para nada) y tampoco pueden evitar incluir enlaces (exclusión de "href").

Un saludo,
  #5 (permalink)  
Antiguo 13/09/2006, 06:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
Los métodos de exclusión de palabras generalmente dan un buen resultado porque no van a mirar script por script (si lo hicieran captcha tampoco valdría para nada) y tampoco pueden evitar incluir enlaces (exclusión de "href").
No entendí por qué "captcha" no sirve para nada? .. Justamente lo que pretendemos evitar con dicha técnica es no automatizar el proceso dado de que no hay "código" automático (que yo conozca) que pueda tomar el código impreso en el gráfico para "inyectarlo" al formulario. Sumado al uso de sesiones y sus validaciones se evita inyectar directo al script de proceso datos.

Por supuesto esa validación no es la única a aplicar. Ante un "spammer" humano (no "bot") poco hay que hacer .. Fijate estos foros como limitamos por expresiones regulares que se publiquen links por parte de usuarios con menos de N mensajes .. aun así los ponen (no "clickeables" y por ende no "indexados" por otros buscadores y demás ..).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:10.