[awgr] Rastrear IP en formulario de contacto

2,816 views
Skip to first unread message

Jose Antonio Romero Hurtado

unread,
May 11, 2010, 12:42:02 PM5/11/10
to Asociación de Webmasters de Granada
Buenas tardes compañeros, tengo un problema en una web que he
diseñado.

Se envían muchos correos (tenemos verificación de correo y tal) que
son falsos, en principio se sospecha de que es la competencia que está
fastidiando, porque siempre llegan con número de teléfono falso.

Se podría hacer algo para que a la vez se enviara esto?

--
Has recibido este mensaje porque estás suscrito al grupo de Google Groups de la Asociación de Webmasters de Granada.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a ugr-web...@googlegroups.com
Para anular la suscripción a este grupo, envía un mensaje a
ugr-webmaster...@googlegroups.com
Si quieres modificar la periodicidad con la que recibes mensajes entra en http://groups.google.com/group/ugr-webmasters/subscribe
Para obtener más opciones, visita este grupo en
http://groups.google.com/group/ugr-webmasters?hl=es?hl=es.
También puedes visitar nuestro sitio web y suscribirte a las noticias del mismo:
http://www.webmastergranada.es/

F. Martín Umpiérrez

unread,
May 11, 2010, 1:00:15 PM5/11/10
to ugr-web...@googlegroups.com
Hola, si el formulario lo procesas mediante php, puedes obtener la ip de la variable $_SERVER['REMOTE_ADDR']
En caso de que uses otro lenguaje, igualmente tendrás esa información accesible, ya es cuestión de que concretes un poco sobre el formulario que usas.

Si compruebas que siempre es la misma ip (o a menos un rango determinado) podrías añadir directivas al servidor web para que deniegue las peticiones o si tienes acceso al sistema operativo, añadir reglas de cortafuegos. Esto lo digo en previsión de que pasen a "mayores" y te traten de hacer algún ataque DoS.


Saludos.


2010/5/11 Jose Antonio Romero Hurtado <jromero...@gmail.com>



--
-----------------------------------------------------------
Francisco Javier Martín Umpiérrez
Asociación de Webmasters de Granada: http://webmastergranada.es/

Jose Antonio Romero Hurtado

unread,
May 11, 2010, 1:05:19 PM5/11/10
to ugr-web...@googlegroups.com
El formulario se realiza de la siguiente manera...

Un form en HTML, que al enviarse procesa un contact.js que verifica los datos de entrada. Si está todo ok, pasa a un send_mail.php que envía la información. El $_SERVER['REMOTE_ADDR'] lo debo poner en el send_mail.php? Os puedo pegar el código si queréis.

Un saludo.

Jose Antonio Romero Hurtado

unread,
May 11, 2010, 1:08:44 PM5/11/10
to ugr-web...@googlegroups.com
Buenas, acabo de localizarlo, funciona de escándalo. MUCHAS GRACIAS!!!


El 11/05/2010, a las 19:00, F. Martín Umpiérrez escribió:

Miguel Ángel

unread,
May 11, 2010, 1:17:51 PM5/11/10
to ugr-web...@googlegroups.com
Esta es una consulta de esas que se arreglan con una búsqueda sencilla en Google, pero bueno.

Para que veáis que no vengo solo a dar por saco :-P, os pongo un trozo de código para mejorar la obtención de la ip del usuario. Si el cliente se esconde detrás de un proxy normal u otro tipo de proxy esta variable te va a dar un resultado equivocado.

Mejor usar esta función para obtener la ip real del visitante

function getRealIP()
{

   if( $_SERVER['HTTP_X_FORWARDED_FOR'] != '' )
   {
      $client_ip =
         ( !empty($_SERVER['REMOTE_ADDR']) ) ?
            $_SERVER['REMOTE_ADDR']
            :
            ( ( !empty($_ENV['REMOTE_ADDR']) ) ?
               $_ENV['REMOTE_ADDR']
               :
               "unknown" );

      // los proxys van añadiendo al final de esta cabecera
      // las direcciones ip que van "ocultando". Para localizar la ip real
      // del usuario se comienza a mirar por el principio hasta encontrar
      // una dirección ip que no sea del rango privado. En caso de no
      // encontrarse ninguna se toma como valor el REMOTE_ADDR

      $entries = split('[, ]', $_SERVER['HTTP_X_FORWARDED_FOR']);

      reset($entries);
      while (list(, $entry) = each($entries))
      {
         $entry = trim($entry);
         if ( preg_match("/^([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)/", $entry, $ip_list) )
         {
            // http://www.faqs.org/rfcs/rfc1918.html
            $private_ip = array(
                  '/^0\\./',
                  '/^127\\.0\\.0\\.1/',
                  '/^192\\.168\\..*/',
                  '/^172\\.((1[6-9])|(2[0-9])|(3[0-1]))\\..*/',
                  '/^10\\..*/');

            $found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);

            if ($client_ip != $found_ip)
            {
               $client_ip = $found_ip;
               break;
            }
         }
      }
   }
   else
   {
      $client_ip =
         ( !empty($_SERVER['REMOTE_ADDR']) ) ?
            $_SERVER['REMOTE_ADDR']
            :
            ( ( !empty($_ENV['REMOTE_ADDR']) ) ?
               $_ENV['REMOTE_ADDR']
               :
               "unknown" );
   }

   return $client_ip;

}

--
Miguel Ángel Pedregosa Pareja
Ingeniería y Desarrollo Web

Email: mi...@huruk.net
Email personal: miguelp...@gmail.com

Gtalk/MSN: miguelp...@gmail.com
Twitter: @ashacz http://twitter.com/ashacz
Facebook: http://www.facebook.com/miguel.pedregosa
Xing: https://www.xing.com/profile/MiguelAngel_PedregosaPareja
Blog: http://www.pedregosa.net
Teléfono: 668 81 06 21

Granada (Andalucía)
España

Jose Antonio Romero Hurtado

unread,
May 11, 2010, 1:20:37 PM5/11/10
to ugr-web...@googlegroups.com
Buenas Miguel Angel, perdona pero he intentado ya en Google y no lo he encontrado, desde luego muchísimas gracias, porque esto es mucho más de lo que quería. Un saludo!

internia

unread,
May 11, 2010, 3:40:31 PM5/11/10
to Asociación de Webmasters de Granada
En el send_mail.php deberías poner las mismas comprobaciones que haces
con contact.js, no basta con validar un formulario de lado del
cliente, también hay que hacerlo del lado del servidor. Del lado del
cliente se hace para comodidad de uso, del lado del servidor se hace
por seguridad. Ten en cuenta que saltarse tu formulario y enviar los
datos directamente a send_mail.php es lo más fácil del mundo. Tampoco
te vendría mal utilizar un captcha si aún no lo haces.

Y mira, esta es la función que utilizo yo para coger las ip, mucho
mejor que simplemente $_SERVER['REMOTE_ADDR']

/**
* @return string
* @desc Gets the client IP address
*/
function GetClientIP()
{
$ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];

if(empty($ip))
$ip = getenv('REMOTE_ADDR');
if(!empty($HTTP_SERVER_VARS['HTTP_CLIENT_IP']))
$ip = $HTTP_SERVER_VARS['HTTP_CLIENT_IP'];

$tmpip = getenv('HTTP_CLIENT_IP');
if(!empty($tmpip))
$ip = $tmpip;
if(!empty($HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR']))
$ip = preg_replace('/,.*/', '',
$HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR']);

$tmpip = getenv('HTTP_X_FORWARDED_FOR');
if(!empty($tmpip))
$ip = preg_replace('/,.*/', '', $tmpip);

return $ip;
}



On 11 mayo, 19:05, Jose Antonio Romero Hurtado
<jromerohurt...@gmail.com> wrote:
> El formulario se realiza de la siguiente manera...
>
> Un form en HTML, que al enviarse procesa un contact.js que verifica los datos de entrada. Si está todo ok, pasa a un send_mail.php que envía la información. El $_SERVER['REMOTE_ADDR'] lo debo poner en el send_mail.php? Os puedo pegar el código si queréis.
>
> Un saludo.
>
> El 11/05/2010, a las 19:00, F. Martín Umpiérrez escribió:
>
> > Hola, si el formulario lo procesas mediante php, puedes obtener la ip de la variable $_SERVER['REMOTE_ADDR']
> > En caso de que uses otro lenguaje, igualmente tendrás esa información accesible, ya es cuestión de que concretes un poco sobre el formulario que usas.
>
> > Si compruebas que siempre es la misma ip (o a menos un rango determinado) podrías añadir directivas al servidor web para que deniegue las peticiones o si tienes acceso al sistema operativo, añadir reglas de cortafuegos. Esto lo digo en previsión de que pasen a "mayores" y te traten de hacer algún ataque DoS.
>
> > Saludos.
>
> > 2010/5/11 Jose Antonio Romero Hurtado <jromerohurt...@gmail.com>
> > Buenas tardes compañeros, tengo un problema en una web que he
> > diseñado.
>
> > Se envían muchos correos (tenemos verificación de correo y tal) que
> > son falsos, en principio se sospecha de que es la competencia que está
> > fastidiando, porque siempre llegan con número de teléfono falso.
>
> > Se podría hacer algo para que a la vez se enviara esto?
>
> > --
> > Has recibido este mensaje porque estás suscrito al grupo de Google Groups de la Asociación de Webmasters de Granada.
> > Si quieres publicar en este grupo, envía un mensaje de correo
> > electrónico a ugr-web...@googlegroups.com
> > Para anular la suscripción a este grupo, envía un mensaje a
> > ugr-webmaster...@googlegroups.com
> > Si quieres modificar la periodicidad con la que recibes mensajes entra enhttp://groups.google.com/group/ugr-webmasters/subscribe
> > Para obtener más opciones, visita este grupo en
> >http://groups.google.com/group/ugr-webmasters?hl=es?hl=es.
> > También puedes visitar nuestro sitio web y suscribirte a las noticias del mismo:
> >http://www.webmastergranada.es/
>
> > --
> > -----------------------------------------------------------
> > Francisco Javier Martín Umpiérrez
> > Asociación de Webmasters de Granada:http://webmastergranada.es/
>
> > --
> > Has recibido este mensaje porque estás suscrito al grupo de Google Groups de la Asociación de Webmasters de Granada.
> > Si quieres publicar en este grupo, envía un mensaje de correo
> > electrónico a ugr-web...@googlegroups.com
> > Para anular la suscripción a este grupo, envía un mensaje a
> > ugr-webmaster...@googlegroups.com
> > Si quieres modificar la periodicidad con la que recibes mensajes entra enhttp://groups.google.com/group/ugr-webmasters/subscribe
> > Para obtener más opciones, visita este grupo en
> >http://groups.google.com/group/ugr-webmasters?hl=es?hl=es.
> > También puedes visitar nuestro sitio web y suscribirte a las noticias del mismo:
> >http://www.webmastergranada.es/
>
> --
> Has recibido este mensaje porque estás suscrito al grupo de Google Groups de la Asociación de Webmasters de Granada.
> Si quieres publicar en este grupo, envía un mensaje de correo
> electrónico a ugr-web...@googlegroups.com
> Para anular la suscripción a este grupo, envía un mensaje a
> ugr-webmaster...@googlegroups.com
> Si quieres modificar la periodicidad con la que recibes mensajes entra enhttp://groups.google.com/group/ugr-webmasters/subscribe
> Para obtener más opciones, visita este grupo enhttp://groups.google.com/group/ugr-webmasters?hl=es?hl=es.

Jose Antonio Romero Hurtado

unread,
May 11, 2010, 3:43:36 PM5/11/10
to ugr-web...@googlegroups.com
GRACIAS!

José Luis López Pino

unread,
May 11, 2010, 7:38:13 PM5/11/10
to ugr-web...@googlegroups.com
Coincido en que si no validas la entrada del formulario en el lado del servidor, te pueden enviar cualquier cosa.
Y si también sospechas que lo hacen con alguna herramienta automática, deberías instalar un captcha.

Jose Antonio Romero Hurtado

unread,
May 12, 2010, 3:47:51 AM5/12/10
to ugr-web...@googlegroups.com
Buenas, pues el caso esque no entra nada realmente sospechoso, sino que nos extraña que entren del orden de 8-10 contactos diarios, cuando en la web anterior no llegaban a 5. Voy a probar a ver si consigo meter ese código y que me funcione.

Un saludo y gracias.
Reply all
Reply to author
Forward
0 new messages