elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Proteger login contra bruteforcers
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Proteger login contra bruteforcers  (Leído 6,561 veces)
pedrox@

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Proteger login contra bruteforcers
« en: 27 Febrero 2009, 00:22 am »

Hola buenas!

Bueno estaba haciendo un login para mi web con php, mysql.
Bueno por ejemplo:

Código
  1. <form action="/index.php" method="post">
  2. <p>
  3.  <input type="text" name="usuario" value="Nombre usuario" onClick="this.value=''">
  4.    </p>
  5. <p><br>
  6.      <input type="password" name="clave" value="Password" onClick="this.value=''">
  7.  <br>
  8.  <br>
  9.      <input type="submit" name="enviar" value="Enviar">
  10.  
  11.    </p>
  12. </form>

compruebo que si $_POST['enviar'] tiene valor, cogo $_POST['usuario'] y $_POST['clave'], envio la consulta a la db, si me devuelve algun resultado, creo una session, sino muestro el típico error.

Entonces cualquier persona malintencionada que vería el login de mi web, podría ver los nombres de los campos que uso para enviar el usuario, password (en el fuente html), el error que muestra al no hacer login, hacerse un pequeño script en perl o en lo que sea y enviar valores mediante peticiones POST a los campos hasta obtener usuario, password...

Soluciones??
pues sí, se podría usar captcha, una tabla en la db que guarde los logins fallidos por ip, si hace 3 o los que sea bloquee la ip y tal...

Alguien sabe hacerlo de otra forma y que sea seguro?

Un saludo y gracias de antemano...


En línea

[u]nsigned


Desconectado Desconectado

Mensajes: 2.397

JS/Node developer


Ver Perfil WWW
Re: Proteger login contra bruteforcers
« Respuesta #1 en: 27 Febrero 2009, 00:45 am »

Hola, bueno la solucoion mas facil es usar una imagen generada con php, como en el sistema de registro de cualquier foro o web.

imagen_anti_ataque.php

Código:
<?php
  $ancho=100;
  $alto=30;
  $imagen=imageCreate($ancho,$alto);
  $amarillo=ImageColorAllocate($imagen,255,255,0);
  ImageFill($imagen,0,0,$amarillo);
  $rojo=ImageColorAllocate($imagen,255,0,0);
  $valoraleatorio=rand(100000,999999);
  session_start();
  $_SESSION['numeroaleatorio']=$valoraleatorio;
  ImageString($imagen,5,25,5,$valoraleatorio,$rojo);
  for($c=0;$c<=5;$c++)
  {
    $x1=rand(0,$ancho);
    $y1=rand(0,$alto);
    $x2=rand(0,$ancho);
    $y2=rand(0,$alto);
    ImageLine($imagen,$x1,$y1,$x2,$y2,$rojo);
  }
  Header ("Content-type: image/jpeg");
  ImageJPEG ($imagen);
  ImageDestroy($imagen);
?>

Luego desde la pagina del formulario (debe ser en php no html plano) comprobas si el codigo ingresado por el usuario en el campo corresponde al de la imagen (almacenado en  $_SESSION['numeroaleatorio']).

Para insertar la imagen en una pagina:

Código:
<img src="imagen_anti_ataque.php" />

Cyaz


En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
pedrox@

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Re: Proteger login contra bruteforcers
« Respuesta #2 en: 27 Febrero 2009, 01:33 am »

Sí, captcha ya he usado. Pero es algo engorroso que los usuarios tengan que estar escribiendo letrillas. Me dijeron que con un input hidden se podría hacer, estuve haciendo pruebas y no consegui nada jeje.

Un saludo, gracias
En línea

HardieVon

Desconectado Desconectado

Mensajes: 181


Programming HardCore


Ver Perfil WWW
Re: Proteger login contra bruteforcers
« Respuesta #3 en: 27 Febrero 2009, 04:06 am »

yu lo as dicho, guarda la ip con muchos logins fallidos, no seria optimo tu sistema pero si seguro.

otra cosa seria con sesiones.
En línea

pedrox@

Desconectado Desconectado

Mensajes: 48


Ver Perfil
Re: Proteger login contra bruteforcers
« Respuesta #4 en: 27 Febrero 2009, 21:24 pm »

Si, lo del bloqueo IP ya lo hize para la administración  ;D
Quiero aprender más metodos para no tener que hacerlo en cualquier formulario...

Nose si alguien conoce lo que digo del <input type="hidden" value="algo aleatorio">
Si me pueden echar una mano, gracias!
En línea

Spider-Net


Desconectado Desconectado

Mensajes: 1.165


Un gran poder conlleva una gran responsabilidad


Ver Perfil WWW
Re: Proteger login contra bruteforcers
« Respuesta #5 en: 28 Febrero 2009, 00:23 am »

Puedes crear una cookie que incremente su valor en cada logeo, si detectas un número alto de intentos de logeo fallidos entonces bloqueas la cuenta o baneas la ip o lo que sea. En caso de que el logeo sea correcto destruyes la cookie y ya está. Es un método...

Lo del campo oculto o (hidden) es sencillo. Creas un campo oculto en tu formulario de logeo con cualquier valor. Por ejemplo "ImPrEsCInDiBlE". Luego cuando envíes el formulario lo primero que tienes que hacer con los datos recibidos es comprobar si has recibido el contenido del campo oculto, si lo has recibido es que ha sido un logeo desde tu web, si no lo has recibido ha sido un script remoto.

El problema de este método es que es fácil de saltar, si usas un sniffer y capturas lo que envía el formulario o simplemente investigas el código fuente de tu página en busca de campos ocultos, aunque no se vean en el navegador, en el código fuente canta el: <input type="hidden"> así que no te lo recomiendo.

Saludos
« Última modificación: 28 Febrero 2009, 00:25 am por Spider-Net » En línea

[u]nsigned


Desconectado Desconectado

Mensajes: 2.397

JS/Node developer


Ver Perfil WWW
Re: Proteger login contra bruteforcers
« Respuesta #6 en: 28 Febrero 2009, 01:12 am »

El problema de este método es que es fácil de saltar, si usas un sniffer y capturas lo que envía el formulario o simplemente investigas el código fuente de tu página en busca de campos ocultos, aunque no se vean en el navegador, en el código fuente canta el: <input type="hidden"> así que no te lo recomiendo.

Lo de sniffers es todo un tema, en cuanto a lo del campo hidden lo puedes crear con DHTML accediendo al DOM, y asi no aparecera en el codigo fuente de tu web. Pero si en el  archivo .js.

Para mi lo mas factibles es lo de captcha debido a que el control se realiza en el server, y no gasta recusos como usar una base de datos, en cuanto o lo de cookies y sessiones se pueden manejar desde el cliente, es decir que con solo re abrir el navegador se borra la session.
En línea

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!
HardieVon

Desconectado Desconectado

Mensajes: 181


Programming HardCore


Ver Perfil WWW
Re: Proteger login contra bruteforcers
« Respuesta #7 en: 28 Febrero 2009, 07:55 am »

lo mas viable es un campo oculto creado con una sesion por que lo de las cookies jajaja nada mas le dejas la cabecera congelada y es como si nada pasara.
En línea

Spider-Net


Desconectado Desconectado

Mensajes: 1.165


Un gran poder conlleva una gran responsabilidad


Ver Perfil WWW
Re: Proteger login contra bruteforcers
« Respuesta #8 en: 28 Febrero 2009, 12:43 pm »

Obviamente cualquier cosa que funcione desde el lado del cliente se lo van a poder saltar. Pero eso no sólo pasa con las aplicaciones web. Cualquier programa que se encuentre de forma local en mi ordenador puedo acceder a sus variables en memoria y modificarlas a mi gusto.

La única solución segura es trabajar siempre del lado del servidor, con una base de datos o un fichero o lo que sea pero que el usuario no tenga acceso.
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Proteger login contra bruteforcers
« Respuesta #9 en: 28 Febrero 2009, 18:15 pm »

Obviamente cualquier cosa que funcione desde el lado del cliente se lo van a poder saltar. Pero eso no sólo pasa con las aplicaciones web. Cualquier programa que se encuentre de forma local en mi ordenador puedo acceder a sus variables en memoria y modificarlas a mi gusto.

La única solución segura es trabajar siempre del lado del servidor, con una base de datos o un fichero o lo que sea pero que el usuario no tenga acceso.

Y tiene razon Spider-Net, amigo lo que te recomendaria seria usar una base de datos, todo lo que sea del lado del cliente sera "violable" por decirlo asi.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Proteger archivos contra copias
Seguridad
bugzzy 7 43,101 Último mensaje 20 Agosto 2012, 06:20 am
por TRIPLEX27
proteger móvil 5800 contra hacker
Hacking Mobile
adolfrm 0 3,033 Último mensaje 7 Diciembre 2011, 17:48 pm
por adolfrm
[DUDA]Proteger contra exploits un equipo con Linux instalado
Seguridad
Sp3ctr3 4 3,394 Último mensaje 12 Junio 2012, 00:44 am
por Pablo Videla
Login PHP contra un fichero txt
Desarrollo Web
Oshrik 3 2,132 Último mensaje 28 Diciembre 2012, 18:47 pm
por Oshrik
Proteger archivo contra copia
Seguridad
benQ1 1 6,383 Último mensaje 5 Enero 2014, 02:04 am
por .:UND3R:.
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines