Siguiendo tus comentarios, parece extraño que tengas duplicados si en realidad estás usando /dev/urandom
como fuente de entropía e identificadores de sesión suficientemente largos.
- ¿Está seguro de que PHP está configurado correctamente ? A partir de PHP 5.4.0, los valores predeterminados de PHP ahora están protegidos, pero sucede que algunas configuraciones históricas del servidor se mantienen con el tiempo y disminuyen la seguridad en comparación con los valores predeterminados actuales (PHP puede que en realidad no use
/dev/urandom
, o puede acumularse en pocas entropías de ella),
- ¿Está seguro de que el problema no ha sido causado por un problema de terceros, como la corrección de sesión ? Tal error, por ejemplo, podría ocurrir si el ID de sesión se puede pasar como parámetro de URL, y esa URL que contiene la sesión se comparte de alguna manera, ya sea explícitamente (URL enviada de una persona a otra) o de alguna manera inesperada (almacenamiento de contenido en caché en el servidor o un proxy, por ejemplo).
/dev/urandom
generalmente se puede considerar como una fuente de entropía confiable. Si por alguna razón aún quiere investigar, puede usar la herramienta ENT
para este fin. Puede encontrar un ejemplo de uso en esta página .
Una verificación rápida y sucia de su archivo sería para asegurarse de que no se haya encontrado, al menos, una colisión durante la prueba de generación de ID de sesión:
LC_ALL=C sort /path/to/sample_file | uniq -d
Reemplace /path/to/sample_file
con su archivo real que contiene su ID de sesión generada, debería generar todas las entradas duplicadas. En circunstancias normales, por lo tanto, no debería producir ninguna salida.
Probar la calidad de seguridad real de estos archivos sería más complicado. Un ID de sesión no solo debe ser único, sino que no debe ser predecible , esto significa que debe distribuirse de manera equitativa y aleatoria en un espacio de posibilidades suficientemente amplio. Esto puede ser difícil de demostrar correctamente. Como dije en mi comentario, ya ha habido una discusión sobre dicho tema , y aunque algunas herramientas de seguridad de aplicaciones web ofrecen análisis de ID de sesión, la conclusión parece ser que la forma más confiable sigue siendo analizar el código de la aplicación y la configuración en sí misma.