Creando un inicio de sesión seguro usando sesiones y cookies en PHP

Estoy haciendo un script de inicio de sesión que me gustaría estar lo más seguro posible. El problema es que la seguridad parece ser una batalla interminable. Básicamente, estoy buscando sugerencias y mejoras para mis ideas.

Lo que tengo es un inicio de sesión basado únicamente en sesiones. Cada vez que cambia la información de la sesión,session_regenerate_id() es llamado para evitar intentos obvios de secuestro.

Cuando la sesión no está configurada, verifico una cookie para un inicio de sesión válido y, en caso de éxito, actualizo la sesión.

Intento asegurar la cookie agregando un valor hash junto con una pieza de información de usuario única (como nombre de usuario o id). Este hash se compone de información variada, incluido el nombre de usuario / id, el hash de contraseña indescifrable, parte de la dirección IP, etc. Al extraer el nombre de usuario / id de la cookie, puedo hacer un nuevo hash de la información de usuario válida y compararlo con el hash en la galleta Mis esperanzas aquí son evitar las cookies falsas y el secuestro de cookies (a menos que también falsifiquen la dirección IP).

EDITA Suponga que el inicio de sesión se realizará a través de HTTPS / SSL, por lo que la transferencia es (razonablemente) segura.

¿Estoy en el camino correcto? ¿Qué más se puede hacer para asegurar mi inicio de sesión?

¡Gracias por la ayuda

Respuestas a la pregunta(5)

Su respuesta a la pregunta