Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Kaxperday en 13 Julio 2016, 14:20 pm



Título: Login con límite intentos en PHP
Publicado por: Kaxperday en 13 Julio 2016, 14:20 pm
Buenas, estoy haciendo un login simple con POST que si los datos son correctos le activo sesión y cargo variables asociadas a esa sesión, pero sería muy fácil romper ese login con fuerza bruta ya que deja enviar usuarios y contraseñas sin límite.

Por ello, quiero que cada IP tenga un máximo de 3 intentos cada minuto por ejemplo.

Al ser muy noob con PHP solo se me ocurre crear un archivo con la IP que intento el login, si falla.
Así pues si falla, ponemos en el archivo datos estructurados de la forma [IP, intentos, tiempo]. Vemos si falla 3 veces y el tiempo de un minuto no ha sido superado en ese caso no validamos sus datos y mostramos error.

Pero claro creando un archivo... imaginad eso con muchas IPs intentando loguarse puede producir fallos... me pregunto si PHP nos facilitará otras formas de hacerlo, y no penséis en cookies para guardarle el estado al usuario ya que puede eliminarlas de las cabeceras y como si nada.

¿Ideas?,

Un saludo.


Título: Re: Login con límite intentos en PHP
Publicado por: ivancea96 en 13 Julio 2016, 14:35 pm
¿SQL?


Título: Re: Login con límite intentos en PHP
Publicado por: [u]nsigned en 13 Julio 2016, 14:57 pm
Sabes usar bases de datos como MySQL?

Una solución rápida seria guardar el numero de intentos de login en la sesion de PHP ($_SESSION). Pero claro que est puede ser saltado por alguien con un mínimo de conocimiento.


Título: Re: Login con límite intentos en PHP
Publicado por: Kaxperday en 13 Julio 2016, 16:23 pm
No sé MySQL, ¿es la única solución?, ¿que diferencia hay en guardar datos en una dbs y usar MySQL a guardarlos en un archivo y obtenerlos con Splits?.

Si no me queda otra aprenderé MySQL, aunque no quería todavía centrarme web.

Saludos.


Título: Re: Login con límite intentos en PHP
Publicado por: ivancea96 en 13 Julio 2016, 16:54 pm
Con SQL puedes hacer búsquedas más rápidas, guardar más datos que solo eses. En fin, lo que es una base de datos relacional.

Además, mayor velocidad en consultas grandes por lo general.


Título: Re: Login con límite intentos en PHP
Publicado por: [u]nsigned en 13 Julio 2016, 18:29 pm
No sé MySQL, ¿es la única solución?, ¿que diferencia hay en guardar datos en una dbs y usar MySQL a guardarlos en un archivo y obtenerlos con Splits?.

Si no me queda otra aprenderé MySQL, aunque no quería todavía centrarme web.

Saludos.

La velocidad. Si es un sistema de prueba con pocos usuarios se podría, pero en una aplicación web real si o si hay que usar bases de datos. Si ya sabes PHP aprender lo básico de MySQL es fácil.

El problema de usar un archivo es que bloquea el flujo del sistema, ya que solo se permite una operación de lectura/escritura a la vez.


Título: Re: Login con límite intentos en PHP
Publicado por: Kaxperday en 13 Julio 2016, 19:03 pm
Bueno la verdad que también lo tengo que usar para el login de usuarios, así que al final tendrá que caer si o si.

Me miraré algún tuto:

http://www.tutorialesprogramacionya.com/mysqlya/

¿Qué es más difícil de hackear una base de datos SQL con sus datos cifrados o un archivo cifrado con sus estructuras de datos?, la principal vulnerabilidad de las páginas es la inyección sql, porque todos hagamos lo mismo no tiene porque ser lo mejor supongo.

Dicho esto voy a aprender mysql XD, paso de montar una dbs XD.

Gracias !!


Título: Re: Login con límite intentos en PHP
Publicado por: [u]nsigned en 13 Julio 2016, 23:20 pm
Definitivamente tienes que aprender PHP orientado a objetos y MySQL.

En cuanto a la seguridad no es tan complicado, y ni te preocupes por eso ahora. Mejor solo enfócate en aprender PHP+MySQL. Al menos esto:

- Tipos de datos basicos
- Crear, modificar y borrar tablas
- Select y update.

Con eso ya tenes lo basico.

Por que te digo que no te preocupes por la seguridad ahora?

Por que en el la plataforma web existen cientos (sino miles) de cosas que peuden ser vulnerabilidades, y lidiar con todo eso es reinventar la rueda. Cuando ya tengas un nviel como para produccion u desarrollar sistemas reales, vas a usar algun framework PHP que te simplifica todo esto. Te olvidas de la seguridad, rutas, tareas comunes, y solo te enfocas en desarrollar.

Una evz que tengas la base de PHP+MySQL te recomiendo que aprendas algun framework PHP. En lo personal CodeIgniter me parece el mejor para empezar, sobre todo si no dominas el concepto de MVC y POO.

Saludos