Foros del Web » Programando para Internet » PHP »

problemas con posible robot en formulario contacto

Estas en el tema de problemas con posible robot en formulario contacto en el foro de PHP en Foros del Web. Hola Creo que un boots envió un contacto por medio del formulario de contactos: Me han llegado 4 mails desde el formulario de contactos de ...
  #1 (permalink)  
Antiguo 22/05/2006, 09:32
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 4 meses
Puntos: 8
problemas con posible robot en formulario contacto

Hola

Creo que un boots envió un contacto por medio del formulario de contactos:

Me han llegado 4 mails desde el formulario de contactos de mi sitio web, el cual dice lo siguiente:

Código:
Subject: Nuevo Contacto
[email protected]([email protected])

Telefono: [email protected]

Celular: the
Content-Type: multipart/alternative; boundary=d4885f00640e52b5c89fcaf4ffd52ed8
MIME-Version: 1.0
Subject: him, and her judicious attention to his habits and comforts
bcc: [email protected]

This is a multi-part message in MIME format.

--d4885f00640e52b5c89fcaf4ffd52ed8
Content-Type: text/plain; charset=\"us-ascii\"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

slowly, for we intend to travel with a set of horses we have made up since we came here, we may expect
--d4885f00640e52b5c89fcaf4ffd52ed8--

.


Universidad:[email protected]

Carrera:[email protected]

Mensaje:[email protected]
A que se debe, son boots?
cómo los puedo evitar?
existe algun filtro, que no sea por imágen de seguridad?

gracias.

Última edición por zsamer; 22/05/2006 a las 14:29
  #2 (permalink)  
Antiguo 22/05/2006, 14:29
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 4 meses
Puntos: 8
alguna idea?
  #3 (permalink)  
Antiguo 22/05/2006, 14:49
Avatar de K3NNY
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: ARGENTINA!
Mensajes: 1.493
Antigüedad: 20 años, 1 mes
Puntos: 20
Hola zsamer. Antes de pasar a tu problema, es mi deber retarte. Por favor, no publiques mensajes seguidos solamente para que el topic aparezca comp no leido, porque si todos hicieramos eso nadie podria ayudar a nadie. Ademas, tu firma se excede por 3 lineas segun las nuevas politicas del foro. Dicho lo que habia que decir, pasemos a tu problema. No se como estara armado tu formulario de contacto, pero supongo que no lo armaste vos, sino que estas usando uno ya hecho de un tercero. Te pregunto esto porque si ese script es muy conocido es muy probable que hayan hecho un bot para usarlo. Lo que podrias probar es cambiandole el nombre al archivo que contiene el formulario, y adecuando el script para que funcione con ese nuevo nombre. De esta forma podrias confundir al bot.

Suerte!
__________________
delFuego.com.ar
mi tumblelog sobre diseño

La dedicación en mi respuesta es directamente proporcional a la dedicación en tu pregunta.
  #4 (permalink)  
Antiguo 22/05/2006, 14:49
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
He leido de como evitar a los bots, pero no recuerdo como se hacía para reconocerlos. Pero, además debes evitar que coloquen cabeceras de correo en los campos del formulario, limpiando esos valores, para evitar spam. Haz una busqueda en el foro y encontraras varios ejemplos de como quitar esos valores.
  #5 (permalink)  
Antiguo 22/05/2006, 15:17
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 4 meses
Puntos: 8
Cita:
Iniciado por K3NNY
supongo que no lo armaste vos, sino que estas usando uno ya hecho de un tercero. Te pregunto esto porque si ese script es muy conocido es muy probable que hayan hecho un bot para usarlo. Lo que podrias probar es cambiandole el nombre al archivo que contiene el formulario, y adecuando el script para que funcione con ese nuevo nombre. De esta forma podrias confundir al bot.

Suerte!
gracias por contestar.

El formulario lo armé yo, no utilizo ninguno de terceros, solo la clase phpmailer para enviar mails.

aqui va el codigo:
Código PHP:
<?
   
global $adminMail;

   if (
$enviar) {

    
OpenTable2();
    
//creamos un array que estará formado por las direcciones de destino
    
$direcciones["direccion1"]=$adminMail;    
      
//pasamos a enviar el correo

      // primero hay que incluir la clase phpmailer para poder instanciar 
      //un objeto de la misma
      
require "includes/class.phpmailer.php";

      
//instanciamos un objeto de la clase phpmailer al que llamamos 
      //por ejemplo mail
      
$mail = new phpmailer();

      
//Definimos las propiedades y llamamos a los métodos 
      //correspondientes del objeto mail

      //Con PluginDir le indicamos a la clase phpmailer donde se 
      //encuentra la clase smtp que como he comentado al principio de 
      //este ejemplo va a estar en el subdirectorio includes
      
$mail->PluginDir "includes/";

      
//Con la propiedad Mailer le indicamos que vamos a usar un 
      //servidor smtp                            
      
$mail->Mailer "smtp";

      
//Asignamos a Host el nombre de nuestro servidor smtp
      
$mail->Host "localhost";
      
      
//Le indicamos que el servidor smtp requiere autenticación
      
$mail->SMTPAuth false;

      
//Le decimos cual es nuestro nombre de usuario y password
      
$mail->Username "xxx";
      
$mail->Password "xxx";
      
      
//Indicamos cual es nuestra dirección de correo y el nombre que 
      //queremos que vea el usuario que lee nuestro correo
      
$mail->From "xxx";

      
$mail->FromName $nombreper;

      
//Asignamos asunto y cuerpo del mensaje
      //El cuerpo del mensaje lo ponemos en formato html, haciendo 
      //que se vea en negrita
      
      
$mail->Subject "Nuevo Contacto";
    
$mensaje "\n\n$nombrecomp($email)";
    
$mensaje .= "\n\nTelefono: $telefono";
    
$mensaje .= "\n\nCelular: $celular";
    
$mensaje .= "\n\nUniversidad:$universidad";
    
$mensaje .= "\n\nCarrera:$carrera";
    
$mensaje .= "\n\nMensaje:$msg";
    
$mensaje nl2br($mensaje);
      
$mail->Body $mensaje;

      
//Definimos AltBody por si el destinatario del correo no admite 
      //email con formato html
      
$mail->AltBody =$mensaje;

      
//el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar 
      //una cuenta gratuita y voy a usar attachments, por tanto lo pongo a 120  
      
$mail->Timeout=120;

      
//Indicamos cuales son las direcciones de destino del correo y enviamos 
      //los mensajes
      
reset($direcciones);
      while (list(
$clave$valor)=each($direcciones)) {
    
$mail->AddAddress($valor);

    
//se envia el mensaje, si no ha habido problemas la variable $success 
    //tendra el valor true
    
$exito $mail->Send();

    
//Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas 
    //como mucho para intentar enviar el mensaje, cada intento se hara 5 s
    //segundos despues del anterior, para ello se usa la funcion sleep
     
$intentos=1
       while((!
$exito)&&($intentos<5)&&($mail->ErrorInfo!="SMTP Error: Data not accepted")){
       
sleep(5);
            
//echo $mail->ErrorInfo;
            
$exito $mail->Send();
            
$intentos=$intentos+1;                
       }

    
//La clase phpmailer tiene un pequeño bug y es que cuando envia un mail con
    //attachment la variable ErrorInfo adquiere el valor Data not accepted, dicho 
    //valor no debe confundirnos ya que el mensaje ha sido enviado correctamente
    
if ($mail->ErrorInfo=="SMTP Error: Data not accepted") {
       
$exito=true;
        }
        
    if(!
$exito)
    {
       echo 
"Problemas enviando correo electrónico a ".$valor;
       echo 
"<br/>".$mail->ErrorInfo;    
    }
    else
    {
       
//Mostramos un mensaje indicando las direccion de 
       //destino y fichero  adjunto enviado en el mensaje    
       //$mensaje="<p>Has enviado un mensaje a:<br/>";
       //$mensaje.=$valor." <br/>";

      /* $mensaje="<p>El Mensaje se envió correctamente, estaremos en contácto con Usted, Gracias</p>";
         echo $mensaje;*/


    
}
    
// Borro las direcciones de destino establecidas anteriormente
        
$mail->ClearAddresses();
    
    }
           
$mensaje="<p>El Mensaje se envió correctamente, estaremos en contacto con Usted, Gracias</p>";
         echo 
$mensaje;
    echo 
"<a href='$PHP_SELF'> Volver al Inicio</a>";

    
CloseTable();
    } 
       else {
 
OpenTable2();

?>
<SCRIPT LANGUAGE="JavaScript">
    <!-- Hide code from non-js browsers
    function validate()
    {
        formObj = document.contact;
        if ((formObj.nombrecomp.value == "") ||
            (formObj.email.value  == "") ||
            (formObj.universidad.value  == "") ||
            (formObj.carrera.value  == "") ||
            (formObj.msg.value  == ""))
        {
            alert("Debe llenar los campos Requeridos");
            return false;
        }
        
        
        /*else {
            alert('<? echo $finishedtext?>');
            return true;
        }*/
    }
    // end hiding -->
</SCRIPT>

<TABLE BORDER=0 cellpadding=5 cellspacing=0>
  <TR>
    <TD>
       <TABLE BORDER=0 cellpadding=2 cellspacing=0>
         <form ENCTYPE="multipart/form-data" action="index.php?modulo=contacto" method="post" name="contact" onSubmit="return validate()">
         <TR>
           <TD>
                <BR>
                <DIV>
                1. Nombre Completo(*)<BR>
                <input type=text size=50 maxlength=50 name=nombrecomp class='txtfield'><BR>

                2. Direccion de Correo (*)<BR>
                <input type='text' size='50' maxlength='60' name='email'><BR>

                3. Numero Telefono<BR>
                <input type='text' size='50' maxlength='32' name='telefono'><BR>
                
                4. Teléfono celular<BR>
                <input type='text' size='50' maxlength='50' name='celular'><BR>

                5. Universidad (*)<BR>
                <input type='text' value='' size='50' maxlength='60' name='universidad'><BR>

                5. Carrera (*)<BR>
                <input type='text' value='' size='50' maxlength='60' name='carrera'><BR>
                
                7. Mensaje (*)<BR>
                <textarea name='msg' rows='7' cols='50'></textarea><BR>

                </DIV>

                <input type='submit' name='enviar' value='Enviar'><BR><BR>(*) Campos Requeridos

          </TD>
           <TD width="10">&nbsp;</TD>
        </tR>
        </FORM>
      </tABLE>
    </TD>
  </TR>
</tABLE>
<?php
CloseTable
();
}
?>
  #6 (permalink)  
Antiguo 22/05/2006, 20:39
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
A mi me paso algo parecido una vez... sino me equivoco con solo cambiar esto:

Código PHP:
if ($enviar) { 
por

Código PHP:
if ($_POST['enviar']) { 
va a ayudar a que tu script sea mas seguro y para que no puedan usarlo mandar spam externamente.
Lo ideal seria que cambies todas las variables por sus correspondientes globales ($algo -> $_POST['algo']) pero en su momento a mi con solo cambiar la variable con la que decidia si mandaba el maail o no me sirvio para dejar de recibir spam desde mi script.
__________________
oohh... quisiera ser godines!!!
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 12:53.