Pregunta:
Fecha: 04-10-2018 18:43:57
(En Español)
Para un proyecto de la universidad tengo que desarrollar un agente inteligente que sea capaz de aprender, su funcionalidad un objetivo debe ser velar por la seguridad de un sistema web. Por ejemplo si tengo un sistema con login, cuando alguien intente loguearse mas de una vez y con clave incorrecta que le muestre un captcha, si supera n cantidad de intentos que bloquee la ip. Debe permitir solo dos sesiones por usuario al mismo tiempo en diferente pc o navegador.
Cosas así debe hacer el agente, estoy programando en php, ya leí bastante de conceptos de agentes, redes neuronales y más. Pero por ningún lado encuentro como se debe hacer un agente, cuales son los pasos o de forma hacer que aprenda, cosas así.
Necesito si tienen conocimiento puedan orientarme, tal vez tienen algún ejemplo ya funcionando, para que en base a eso pueda desarrollar mi agente.
Desde ya muchas gracias!!! Votos: 0 - Respuestas: 4 - Vistas: 14 Compartir en: Google Facebook Twitter LinkedIn Link
Agente inteligente que aprende[No resuelta]
Saludos colegas, vengo con una gran inquietud, espero puedan ayudarme.Para un proyecto de la universidad tengo que desarrollar un agente inteligente que sea capaz de aprender, su funcionalidad un objetivo debe ser velar por la seguridad de un sistema web. Por ejemplo si tengo un sistema con login, cuando alguien intente loguearse mas de una vez y con clave incorrecta que le muestre un captcha, si supera n cantidad de intentos que bloquee la ip. Debe permitir solo dos sesiones por usuario al mismo tiempo en diferente pc o navegador.
Cosas así debe hacer el agente, estoy programando en php, ya leí bastante de conceptos de agentes, redes neuronales y más. Pero por ningún lado encuentro como se debe hacer un agente, cuales son los pasos o de forma hacer que aprenda, cosas así.
Necesito si tienen conocimiento puedan orientarme, tal vez tienen algún ejemplo ya funcionando, para que en base a eso pueda desarrollar mi agente.
Desde ya muchas gracias!!! Votos: 0 - Respuestas: 4 - Vistas: 14 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 05-10-2018 03:11:53 Bueno no es complicado de hacer hasta cierto punto. Pudes ayudarte con Sesiones y la base de datos para ello, por ejemplo:
1.- Verifica en una tabla previamente creada si la IP del Usuario no esta bloqueada para su uso.
2.- Verifica si el usuario no tienen el máximo de sesiones registradas en tu base de datos para ese día.
3.- Almacenas en una variable de sesión los intentos del usuario de loguearse, si este alcanza 2 intentos, mediante una validación muestras el captcha y mediante la misma validación si este alcanza los 4 intentos, bloqueas la IP almacenándola en una tabla de la base de datos. Una vez bloqueada la IP elimina la variable de sesión.
Recuerda que el bloqueo de IP es un poco excesivo y delicado, esto debido a que si tu sistema lo usan en una empresa por ejemplo, y los intentos los realizó un empleado despistado, los siguientes empleados que usen el mismo terminal no podrán acceder si la IP del terminal esta bloqueada, esto para los casos en los que la terminal use una IP pública.
Por otro lado, si es una red lan y bloqueas la IP pública que es la que verá tu sistema, entonces estas bloqueado el acceso de toda la red a tu app.
El bloqueo de IP se podría utilizar en casos de excesivas peticiones externas a tu server o de sospecha de ataque externo a tus formularios, por ejemplo, que los intentos de login no sean directamente desde tu dominio, allí SI bloquearía la IP siempre que no cuente con ese sistema de login remoto.
El resto del aprendizaje va a depender en gran medida de lo que se quiera que el sistema aprenda y en cuanta interacción va a tener el sistema con el usuario mediante dicho aprendizaje. Votos: 0 - Link respuesta -
Fecha: 05-10-2018 18:30:42 Carlos Quintero, muchas gracias por responder, con tu respuesta me aclaras algunas dudas y das ideas. Pero respecto a cómo se programa un agente, cuál es el algoritmo a usar y eso, no se responde :( Votos: 0 - Link respuesta
-
Fecha: 10-10-2018 14:11:08 Creo que utilizar inteligencia artificial para lo qu comentas sería demasiado procesamiento, un simple BOT podría hacer esas tareas sin más, yo lo haría de otra forma, necesitarás:
1.- Si necesitas verificar la cantidad de intentos de inicio de sesión lo que dice Carlos Quntero aplica perfectamente.
2.- Necesitas una tabla en un base de datos donde estés recibiendo los valores a analizar: La cantidad de veces que una IP se ha intentado conectar, la cantidad de sesiones abiertas, los navegadores usados, podrías guardar todo eso en una sola tabla y actualizarlo constantemente.
3.- Una tarea programada o un cron (según el S.O. en el que lo ejecutes) que se ejecute cada X tiempo y revise estos valores para ejecutar X acción, por ejemplo:
-- Si hay muchos intentos de inicio de sesión desde X dirección IP, que se agregue una regla al firewall para que bloquee conexiones entrantes de esa IP.
-- Si revisa la columna de sesiones abiertas y vé que hay mas de 2, que cambie el valor de la columna SESSION_ACTIVA (o su equivalente).
-- Si todas las sesiones abiertas son de la misma IP, mismo agente de usuario (navegador) conserva solo la ultima de las 2.
Tu agente debe hacer las modificaciones directo en la base de datos, o en el software del firewall o donde sea, es decir: DEBE SER INDEPENDIENTE A TU CÓDIGO PHP, y tu código PHP debe actuar en base a lo que haya en las tablas, y siempre revisar esos valores.
En cada petición al servidor, sea AJAX o Estándar, siempre debes validar todas las reglas configuradas en tu Agente, y también debes tenerlo en segundo plano como comentaba (Tarea programada o Cron), de esa forma reduces la probabilidad de fallas y maximizas la aplicación de las reglas programadas.
Lo que si te digo, y esto no es solo sugerencia sinó que VA A PASAR: Todo esto va a requerir mucha potencia de procesamiento, lo indicado sería tener un cluster o un grupo de computadoras basadas en redundancia y balanceo, de forma que siempre haya alguna supervisando todos los procesos, pero siempre hayan otras para mantener los servicios arriba.
Espero, si no resolví tu duda totalmente, al menos haberte orientado un poco sobre como hacerlo.
Saludos. Votos: 0 - Link respuesta -
Fecha: 11-10-2018 05:09:48 León, muchas gracias por la respuesta, sugerencias e ideas, creo que con lo que han aportado en sus respuestas tengo suficiente, incluso ya apliqué lo de guardar la información de las sesiones en la bd, hasta el momento va bien, gracias por todo. Votos: 1 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
