Ya he creado y refinado los sistemas de registro e inicio de sesión. Sin embargo, estoy convencido de que la parte difícil se produce cuando se crea una sesión. Por lo que sé, esto se debe tanto al secuestro como a la fijación. Que con toda honestidad no entiendo completamente el concepto de.
He navegado por Internet todo el día y he realizado una gran cantidad de investigación. Los siguientes artículos me han sido útiles hasta ahora:
Cómo crear sesiones a prueba de balas
Guía de seguridad de PHP: Sesiones
Hasta ahora tengo muy poco, realmente podría necesitar ayuda y orientación. Esto es algo de lo que tengo hasta ahora:
Cuando una contraseña de usuario coincide y han confirmado su identidad mediante el script de inicio de sesión, se llama a la siguiente función. La sesión se inicia en la parte superior de la secuencia de comandos de inicio de sesión.
function begin_session()
{
session_regenerate_id();
$_SESSION['valid'] = 1;
$_SESSION['fingerprint'] = md5($_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']);
}
Estoy usando la variable $ _SESSION ['valid'] como simple en la que el usuario ha iniciado sesión en la confirmación. Estoy asignando la sesión a un único agente de usuario y dirección IP. Veo que el agente de usuario es bastante inútil ya que se puede falsificar fácilmente, pero creo que es mejor tenerlo en lugar de no tenerlo.
Para mí, es evidente que los usuarios con cambio de ip dinámico / dinámico se desconectarán ... pero todos los que me han dicho esto no han podido presentarme una mejor opción o me la han explicado mejor.
Luego, estoy usando la siguiente función para hacer coincidir el agente del usuario actual con el agente del usuario original registrado en la creación de la sesión.
function authenticate()
{
session_start();
if ($_SESSION['fingerprint'] != md5($_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR'])) {
session_destroy();
echo 'die';
header('Location: http://website login page/');
exit();
}
}
En este momento, debido a mi falta de comprensión, no sé de dónde soy vulnerable ni a dónde puedo ir y hacer mejoras. Todo esto es muy nuevo para mí y por el momento al menos estoy tratando de aprender esto en mi tiempo libre. Todo es nuevo para mí y quiero asegurar el mejor trabajo.