Blog de Gonzalo

SEGURIDAD EN LAS SESIONES DE PHP

Algunos consejos sobre la seguridad de sesiones en php y creo que son importantes:

  • session.cookie_lifetime Es mejor poner el valor a 0 y le indica a los navegadores que no almacene permanentemente cookies. Por tanto, cuando un navegador finaliza, la cookie de ID de sesión se elimina inmediatamente. Si el desarrollador establece un valor distinto de 0, podría permitir que otros usuarios usen ese ID de sesión.
  • session.use_cookies y session.use_only_cookies poner ambos a ON. Aunque las cookies de HTTP tienen algunos problemas, es la mejor manera de manejar las sesiones.
  • session.use_strict_mode, ponerlo a ON. Previene que el módulo de sesiones utilice ID de sesiones no inicializados. En otras palabras, el módulo de sesiones solamente acepta ID de sesiones válidos generados por él mismo. Rechaza ID de sesions proporcionados por los usuarios. Se podría realizar una inyección de ID de sesiones a través de inyecciones de cookies mediante JavaScript de forma permanente o temporal.
  • session.cookie_httponly, ponerlo a ON. Deniega el acceso a cookies de sesión a JavaScript. Este ajuste previene del robo de cookies por inyecciones de JavaScript. Es posible utilizar ID de sesiones como claves de protección CSRF, aunque no se recomienda.
  • session.cookie_secure, ponerlo a ON. Permite el acceso a cookies de ID de sesión solamente al protocolo HTTPS. Si un sitio web es un sitio solamente HTTPS, se debe habilitar este ajuste.
  • session.gc_maxlifetime, tiene que tener el valor más pequeño posible. La recolección de basura (GC) se realiza por probabilidades. Este ajuste no garantiza la eliminación de sesiones antiguas. Algunos modulos de gestores de almacenamiento de sesiones no emplean este ajuste. Consulte la documentación de gestores almacenamiento de sesiones para más detalles. Aunque los desarrolladores no pueden depender de este ajuste, se recomienda establecerlo al valor más pequeño posible.
  • session.use_trans_sid, ponerlo a OFF. La deshabilitación de la administración de ID de sesiones transparentes mejoraría la seguridad general de ID de sesiones eliminando la posibilidad de inyecciones y filtracioines de ID de sesiones.
  • session.referer_check Poner la url de la página. Cuando session.use_trans_sid está habilitado, se recomienda el empleo de este ajuste si es posible. Reduce el riesgo de inyecciones de ID de sesión.
  • session.cache_limiter ponerlo a "nocache". Garantiza que los contenidos HTTP no se almacenan en caché para sesiones autenticadas. Permite el almacenamiento en caché solamente cuando el contenido no es privado.
  • session.hash_function Ponerlo a "sha256". Las funciones de hash más fuertes generarán ID de sesiones más fuertes. Aunque son improbables las colisiones hash incluso con MD5, se deberían utilizar funciones de hash SHA-2 o posterior. Es aconsejable usar hash más fuertes, como sha384 y sha512.

Compartir en twitter