PHP: ¿Cómo evitar el secuestro de la sesión con token almacenado como una cookie?

Estoy trabajando en un RIA en PHP. Para tratar de evitar el secuestro de la sesión introduje un token, generado al iniciar sesión, basado en un número de semana sal, ISO-8601 y la IP del usuario.

$salt = "blahblahblah"; $tokenstr = date('W') . $salt . $_SERVER['REMOTE_ADDR']; $token_md5 = md5($tokenstr); define("token_md5", $token_md5); 

Actualmente, se pasa por GET o POST con cada solicitud, pero me preguntaba si podría evitar esto ofreciéndolo como una cookie, ya que depende de la IP del usuario. Recién ahora estoy aprendiendo sesiones, así que me preguntaba si hay alguna preocupación de seguridad al hacer eso. ¿Es una mala idea?

Cualquier información que el usuario guarde puede ser robada; cualquier información que envíe un visitante podría ser falsa. Es mejor almacenar la IP remota en $_SESSION cuando se abre la sesión, y comparar la IP remota con cada solicitud. Si no coinciden, es probable que sea un secuestro. Genere una nueva ID y haga que el usuario vuelva a iniciar sesión.

session_regenerate_id() es ideal para evitar el secuestro de la sesión.

session_regenerate_id – Actualiza la identificación de sesión actual con una nueva generación

Gire continuamente el session_id para cada visita a la página. Hace que sea muy difícil secuestrar un objective en constante movimiento.

He hecho una RIA con el mismo enfoque que usted ha hecho, y simplemente configuré SSL en la aplicación para seguridad. Dado que Flex y remoting no tienen sesiones. Recomendaría usar SSL. Mi compañero de trabajo también desarrolló una aplicación con inicio / cierre de sesión de usuario e hizo lo mismo.