45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | title: Session Hijacking | ||
|  | localeTitle: Secuestro de sesión | ||
|  | --- | ||
|  | ## Secuestro de sesión
 | ||
|  | 
 | ||
|  | El secuestro de sesión es una vulnerabilidad causada por un atacante que obtiene acceso al identificador de sesión de un usuario y puede usar la cuenta de otro usuario haciéndose pasar por él. Esto se usa a menudo para obtener acceso a la cuenta de un usuario administrativo. | ||
|  | 
 | ||
|  | ### Defensa contra ataques de secuestro de sesión en PHP
 | ||
|  | 
 | ||
|  | Para defenderse de los ataques de secuestro de sesión, debe verificar el navegador del usuario actual y la información de ubicación con la información almacenada sobre la sesión. A continuación se muestra una implementación de ejemplo que puede ayudar a mitigar los efectos de un ataque de secuestro de sesión. Comprueba la dirección IP, el agente de usuario y, si la sesión caducó, elimina una sesión antes de reanudarla. | ||
|  | 
 | ||
|  | ```PHP | ||
|  | <?php  | ||
|  |  session_start();  | ||
|  |   | ||
|  |  // Does IP Address match?  | ||
|  |  if ($_SERVER['REMOTE_ADDR'] != $_SESSION['ipaddress'])  | ||
|  |  {  | ||
|  |  session_unset();  | ||
|  |  session_destroy();  | ||
|  |  }  | ||
|  |   | ||
|  |  // Does user agent match?  | ||
|  |  if ($_SERVER['HTTP_USER_AGENT'] != $_SESSION['useragent'])  | ||
|  |  {  | ||
|  |   session_unset();  | ||
|  |   session_destroy();  | ||
|  |  }  | ||
|  |   | ||
|  |  // Is the last access over an hour ago?  | ||
|  |  if (time() > ($_SESSION['lastaccess'] + 3600))  | ||
|  |  {  | ||
|  |   session_unset();  | ||
|  |   session_destroy();  | ||
|  |  }  | ||
|  |  else  | ||
|  |  {  | ||
|  |   $_SESSION['lastaccess'] = time();  | ||
|  |  }  | ||
|  | ``` | ||
|  | 
 | ||
|  | #### Más información:
 | ||
|  | 
 | ||
|  | *   [manual de seguridad de sesión php.net](https://secure.php.net/manual/en/session.security.php) |