estoy trabajando con sesiones en PHP, y tengo diferentes aplicaciones en un solo dominio. El problema es que las cookies son específicas de un dominio y, por lo tanto, las ID de sesión se envían a cualquier página en un solo dominio. (No sé si hay una manera de hacer que las cookies funcionen de manera diferente). Entonces, las variables de sesión son visibles en todas las páginas de este dominio. Estoy tratando de implementar un gestor de sesión personalizado para superar este comportamiento, pero no estoy seguro si lo estoy pensando bien.cómo implementar el manejo de sesión mejorado en PHP
Quiero evitar por completo el sistema de sesión PHP, y hacer un objeto global, que almacenaría los datos de la sesión y al final del script guárdelo en la base de datos.
- En el primer acceso me gustaría generar session_id único y crear una cookie
- En el extremo de la secuencia de comandos o guardar datos de sesión con session_id, marcas de tiempo para inicio de sesión y último acceso, y los datos de $ _SERVER, como REMOTE_ADDR , REMOTE_PORT, HTTP_USER_AGENT.
- En cada base de datos de chceck de acceso para session_id enviada desde el cliente, compruebe IP, puerto y agente de usuario (por seguridad) y lea los datos en la variable de sesión (si no caduca).
- Si session_id expiró, elimínelo de la base de datos.
Esa variable de sesión se implementaría como singleton (sé que conseguiría un acoplamiento estrecho con esta clase, pero no sé si hay una mejor solución).
Estoy tratando de obtener beneficios siguientes: Variables
- Sesión invisibles en otras secuencias de comandos en el mismo servidor y mismo dominio gestión
- encargo de la caducidad de sesión
- manera de ver las sesiones abiertas (algo como lista de usuarios en línea)
No estoy seguro de si estoy pasando por alto cualquier desventaja de esta solución. ¿Hay alguna forma mejor?
Gracias!
ACTUALIZACIÓN: i no explicaba en detalle suficiente y causó mucha confusión en este punto, por lo que quiero hacer más claro lo que estoy trabajando con: la
estoy construyendo aplicación de servidor SOA, que se desplegaría en muchos entornos diferentes. No tendrá su propio servidor web, por lo que en esos entornos podría haber otras aplicaciones PHP. Los empleados de estas compañías tendrán cuentas de usuario en esta aplicación, por lo que obtendrán una cookie con ID de sesión en esta aplicación.
Como sabemos, el servidor web que ejecuta PHP al cargar los datos de la sesión no hace diferencia (al menos por defecto) qué secuencia de comandos desde qué directorio creó la sesión. Todo lo que necesita es una ID de sesión. Esta ID de sesión se envía con cada solicitud de cliente a servidor. De sus respuestas obtuve una forma, ¿cómo podría PHP restringir las cookies para cierto directorio, pero el usuario malintencionado puede editar las cookies, ya que se almacenan en su computadora. El usuario malintencionado en mi caso puede tener acceso para escribir y ejecutar el script php en el mismo entorno, aunque no tenga acceso a mi aplicación y a su base de datos. Si crea una secuencia de comandos, podría usar Identificación de sesión desde la cookie de mi aplicación, por lo que tiene acceso para leer y editar datos de sesión en mi aplicación y obtener acceso a partes de mi aplicación, que no debería permitírsele.
Veo que habrá otras amenazas de seguridad en la implementación de la aplicación en dicho entorno, lo que busco es el mejor aislamiento que pueda hacer, y el manejo de sesiones predeterminado parece demasiado peligroso y no está diseñado para usos como este.
Así que mi pregunta es, si usted ve algo, que es menos seguro, menos flexible en mi diseño, de lo que sería con la gestión de sesión predeterminada ..
Gracias por sus respuestas, ..
Bloqueo de la dirección IP y el puerto no es una buena idea. Porque, en general, ambos pueden cambiar de una solicitud a otra. – Gumbo
No sé sobre port, pero leí en algún tipo de libro de seguridad de PHP, que no debe permitir solicitudes de IP diferentes, porque es un tipo común de ataque para robar Session Id y la restricción de IP debe evitar el uso de este robo carné de identidad. Entiendo que podría haber algunas situaciones en las que su ip está siendo modificada, pero ¿sabe qué tipo de situaciones son esas? – marianboda
Algunos ISP asignan a las personas una nueva IP cada solicitud. – pinkgothic