<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Curso_POO_PHP_Secuestro_e_fixaci%C3%B3n_da_sesi%C3%B3n</id>
	<title>Curso POO PHP Secuestro e fixación da sesión - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Curso_POO_PHP_Secuestro_e_fixaci%C3%B3n_da_sesi%C3%B3n"/>
	<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_Secuestro_e_fixaci%C3%B3n_da_sesi%C3%B3n&amp;action=history"/>
	<updated>2026-10-25T22:51:59Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_Secuestro_e_fixaci%C3%B3n_da_sesi%C3%B3n&amp;diff=36737&amp;oldid=prev</id>
		<title>Vlourido: /* Fixación da sesión (session fixation) */</title>
		<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_Secuestro_e_fixaci%C3%B3n_da_sesi%C3%B3n&amp;diff=36737&amp;oldid=prev"/>
		<updated>2013-07-26T19:10:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Fixación da sesión (session fixation)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Secuestro e fixación da sesión ==&lt;br /&gt;
&lt;br /&gt;
Como xa vimos, PHP emprega [[Curso POO PHP Sesións|sesións]] para almacenar a información dos usuarios. Cada unha das sesións identifícase mediante un ID que o usuario transmite en cada petición para identificarse. Esta transmisión do ID pode realizarse mediante un parámetro GET, ou mediante unha [[Curso_POO_PHP_Cookies|Cookie]].&lt;br /&gt;
&lt;br /&gt;
Existen dous tipos de ataques que se basean neste identificador: o secuestro e a fixación da sesión.&lt;br /&gt;
&lt;br /&gt;
=== Secuestro da sesión (&amp;#039;&amp;#039;session hijacking&amp;#039;&amp;#039;) ===&lt;br /&gt;
&lt;br /&gt;
Chamamos secuestro da sesión a calquera método ou técnica que teña como fin conseguir o identificador da sesión dun usuario. As formas de conseguir este obxectivo son variadas, como por exemplo interceptando o tráfico da rede, ou incluso realizando un ataque de forza bruta (probando moitos IDs) ata conseguir un válido.&lt;br /&gt;
&lt;br /&gt;
Unha das primeiras medidas para evitar o secuestro da sesión dos usuarios é &amp;#039;&amp;#039;&amp;#039;enviar os identificadores do cliente ao servidor empregando sempre Cookies&amp;#039;&amp;#039;&amp;#039;. Deste xeito, o identificador non aparece na URL de cada unha das páxinas, o que podería ocasionar o envío ou a publicación accidental do mesmo polo usuario ao querer obter o enlace dunha páxina calquera.&lt;br /&gt;
&lt;br /&gt;
PHP permite aos usuarios empregar o método GET cando as cookies non están habilitadas. Este comportamente pode modificarse empregando a directiva de configuración &amp;#039;&amp;#039;&amp;#039;[http://www.php.net/manual/es/session.configuration.php#ini.session.use-only-cookies session.use_only_cookies]&amp;#039;&amp;#039;&amp;#039;, que a partir da versión 5.3.0 xa se atopa por defecto a &amp;#039;1&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
session.use_only_cookies = 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cando sexa posible tamén é recomendable &amp;#039;&amp;#039;&amp;#039;empregar conexións seguras con HTTPS&amp;#039;&amp;#039;&amp;#039; para evitar a interceptación do tráfico.&lt;br /&gt;
&lt;br /&gt;
Outra medida para dificultar o secuestro da sesión é &amp;#039;&amp;#039;&amp;#039;limitar o seu tempo de vida&amp;#039;&amp;#039;&amp;#039;. Isto pode facerse de dúas maneiras:&lt;br /&gt;
&lt;br /&gt;
* Empregando a directiva &amp;#039;&amp;#039;&amp;#039;[http://www.php.net/manual/es/session.configuration.php#ini.session.cookie-lifetime session.cookie_lifetime]&amp;#039;&amp;#039;&amp;#039; para indicar o tempo de caducidade dunha sesión. Transcurrido ese tempo, a sesión pasa a considerarse inválida e deberá abrirse unha nova. Isto messmo pode facerse coa función &amp;#039;&amp;#039;&amp;#039;[http://www.php.net/manual/es/function.session-set-cookie-params.php session_set_cookie_params]&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
* Empregando a directiva &amp;#039;&amp;#039;&amp;#039;[http://www.php.net/manual/es/session.configuration.php#ini.session.gc-maxlifetime session.gc_maxlifetime]&amp;#039;&amp;#039;&amp;#039;, que indica o tempo de inactividade dunha sesión. Pasado ese tempo, a sesión pasa a considerarse inválida.&lt;br /&gt;
&lt;br /&gt;
Tamén podemos &amp;#039;&amp;#039;&amp;#039;cambiar o ID da sesión&amp;#039;&amp;#039;&amp;#039; de cando en vez empregando a función &amp;#039;&amp;#039;&amp;#039;[http://www.php.net/manual/es/function.session-regenerate-id.php session_regenerate_id]&amp;#039;&amp;#039;&amp;#039;. Este método é transparente para os usuarios activos pero provoca a invalidez do anterior identificador, que xa non poderá empregarse con fins maliciosos en caso de ter sido capturado.&lt;br /&gt;
&lt;br /&gt;
Para rematar, outra medida é &amp;#039;&amp;#039;&amp;#039;comprobar en cada petición os datos relacionados co cliente&amp;#039;&amp;#039;&amp;#039;, como poden ser o axente de usuario (&amp;#039;&amp;#039;&amp;#039;$_SERVER[&amp;#039;HTTP_USER_AGENT&amp;#039;]&amp;#039;&amp;#039;&amp;#039;) e en casos extremos tamén a dirección orixe da petición (&amp;#039;&amp;#039;&amp;#039;$_SERVER[&amp;#039;REMOTE_ADDR&amp;#039;]&amp;#039;&amp;#039;&amp;#039;). Cando algunha das dúas cambia con respecto á obtida na anterior petición, sobre todo a primeira, debería anularse a sesión e forzar ao usuario a rexistrarse de novo para comezar unha nova sesión.&lt;br /&gt;
&lt;br /&gt;
=== Fixación da sesión (&amp;#039;&amp;#039;session fixation&amp;#039;&amp;#039;) ===&lt;br /&gt;
&lt;br /&gt;
No método de secuestro da sesión se descoñece o identificador do cliente e o que se busca é tratar de descubrir cal é. Nesta ocasión, o que se busca é acadar que o usuario se loguee cun identificador de sesión que xa coñecemos.&lt;br /&gt;
&lt;br /&gt;
Para evitar estes ataques deben terse en conta as mesmas recomendacións mencionadas anteriormente para evitar o secuestro da sesión, e tamén revisar o valor do parámetro &amp;#039;&amp;#039;&amp;#039;[http://www.php.net/manual/es/session.configuration.php#ini.session.use-trans-sid session.use_trans_sid]&amp;#039;&amp;#039;&amp;#039; na configuración de PHP.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
session.use_trans_sid = 0;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se o valor do parámetro anterior fose &amp;#039;1&amp;#039;, PHP lería os identificadores de sesión pasados nun parámetro GET da URL, aínda que o usuario estivese a empregar cookies para a súa transmisión. Isto posibilitaría a creación de URLs fraudulentas que inclúan identificadores de sesión coñecidos por un atacante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Vlourido|Víctor Lourido]] 13:45 26 jul 2013 (CEST)&lt;/div&gt;</summary>
		<author><name>Vlourido</name></author>
	</entry>
</feed>