¿Session_regenerate_id () sin verdadero parámetro mejora la seguridad? ¿Debo usarlo justo antes de iniciar sesión?

7

Quiero reducir la vulnerabilidad del ataque de reparación de sesión, por lo tanto, utilicé session_regenerate_id () antes de iniciar sesión. De alguna manera, ahora estoy en la oscuridad y no estoy seguro de cuál es la respuesta correcta para las siguientes preguntas:

  • Cuando no configuramos el parámetro de función en TRUE entonces los archivos antiguos no será eliminado ¿Es esto seguro cuando tenemos acceso a viejos? sesiones? ¿El atacante puede usar sesiones antiguas para arreglar las sesiones?
  • ¿Debo usar la función antes de iniciar sesión?

  • ¿Debo establecer el parámetro en true ?

pregunta ALH 27.06.2012 - 08:07
fuente

1 respuesta

9

La solución para evitar la reparación de la sesión es simplemente cambiar el ID de la sesión.

bool session_regenerate_id([bool $delOldSession = false]) reemplazará el ID de sesión actual por uno nuevo y mantendrá la información de la sesión actual. Al agregar el parámetro true : session_regenerate_id(true) se borra la versión anterior. Si no elimina las sesiones anteriores, su aplicación web es vulnerable al secuestro de sesiones. Dejas sesiones antiguas pero válidas dentro del directorio / tmp. Esto significa:

  • en los servidores de alojamiento web compartidos, algunas personas aún podrían tener acceso a ellos
  • le da más oportunidad de adivinar cualquiera de su ID de sesión válida

Siempre debes destruir las sesiones antiguas con session_regenerate_id(true) o session_destroy() .

Sin embargo, debes tener en cuenta el rendimiento de session_regenerate_id(true) . Lo mínimo es usarlo cuando cambie los privilegios del usuario (como inicio de sesión, cierre de sesión). Cuando lo uses con demasiada frecuencia, notarás cosas "extrañas" en tus sesiones. PHP tiene restricción en el acceso a la sesión para una sola tarea en ejecución. Múltiples solicitudes se ponen en cola. Si envías solicitudes para ayunar, entonces:

  • La primera solicitud cambia el ID de sesión y elimina la sesión anterior.

  • La segunda solicitud (todavía) tiene el ID de sesión anterior e intenta realizar algunas operaciones en él.

  • Como este ID de sesión anterior no existe, la nueva sesión se está creando, lo que lleva al cierre de sesión del usuario.
respondido por el p____h 27.06.2012 - 09:05
fuente

Lea otras preguntas en las etiquetas