Veamos, hay algo que nunca he acabado de entender de todo lo que leo de session hijacking.
Si un atacante es capaz de obtener el identificador de sesión se dice que para evitar que se lleve a cabo tal robo es el de hacer una comprobación, como por ejemplo la de testear el user agent del usuario (entre otras, pero centremonos en esto).
Esto lo entiendo, ya que si un usuario estaba navegando con Firefox y de repente hace una petición con IE significa que algo sospechoso ha ocurrido.
Ahora bien, el obtener el user agent es algo trivial si has sido capaz de obtener el id de sesión, así que se propone el uso de un token, como por ejemplo:
Código PHP:
<?php
$token = $_SERVER['HTTP_USER_AGENT'];
$token .= 'PalabraSecreta';
$token = md5($token);
if ($_SESSION['token'] === $token) ...
?>
También se propone el generar un token único, como por ejemplo:
Código PHP:
<?php
$token = md5(uniqid(rand(),TRUE));
$_SESSION['token'] = $token;
?>
Por más que busco no encuentro alguien que se pregunte lo mismo que yo, así que debo ser yo quien no se está percatando de algo. ¿Alguien me ilumina?
P.D: pregunta extra aunque relacionada. ¿por qué siempre que se habla de capturar datos se habla en el momento de que un usuario hace una petición al servidor web? ¿no se pueden capturar esos datos en el momento en el que el servidor web responde al usuario?
Saludos.