<?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_Cross-Site_Request_Forguerie</id>
	<title>Curso POO PHP Cross-Site Request Forguerie - 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_Cross-Site_Request_Forguerie"/>
	<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_Cross-Site_Request_Forguerie&amp;action=history"/>
	<updated>2026-10-25T22:31:18Z</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_Cross-Site_Request_Forguerie&amp;diff=36484&amp;oldid=prev</id>
		<title>Vlourido: /* Cross-Site Request Forguerie (CSRF) */</title>
		<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Curso_POO_PHP_Cross-Site_Request_Forguerie&amp;diff=36484&amp;oldid=prev"/>
		<updated>2013-07-20T01:13:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Cross-Site Request Forguerie (CSRF)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Cross-Site Request Forguerie (CSRF) ==&lt;br /&gt;
&lt;br /&gt;
Un ataque CSRF consiste en aproveitar unha sesión aberta nun sitio web para, dende outra páxina do mesmo navegador, enviar unha petición que aproveite as credenciais do usuario para levar a cabo unha acción sen o seu consentimento.&lt;br /&gt;
&lt;br /&gt;
Por exemplo, mentres estás logueado nunha páxina como banco.es, poderías visitar outra páxina que conteña unha etiqueta HTML como a seguinte:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;conta.php?accion=borra&amp;quot; style=&amp;quot;display: none;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O que desencadenaría unha acción cos privilexios do usuario.&lt;br /&gt;
&lt;br /&gt;
A mellor forma de protexerse fronte a un ataque CSRF, é asignar a cada usuario un token único por sesión, e verificar en cada acción a posesión do mesmo. Por exemplo, cando un usuario inicia sesión asignámoslle o token aleatorio:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$_SESSION[&amp;quot;token&amp;quot;] = md5(uniqid(mt_rand(), true));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As funcións empregadas na xeración do token son as seguintes:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[http://es1.php.net/manual/es/function.uniqid.php uniqid]&amp;#039;&amp;#039;&amp;#039;. Obtén un identificador único baseándose na hora actual. O primeiro parámetro é un prefixo, e o segundo a true indica que a lonxitude o identificador sexa de 23 caracteres.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[http://es1.php.net/manual/es/function.mt-rand.php mt_rand]&amp;#039;&amp;#039;&amp;#039;. É un xerador de números aleatorios, para engadir maior aleatoriedade ao token obtido.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[http://es1.php.net/manual/es/function.md5.php md5]&amp;#039;&amp;#039;&amp;#039;. Obtén un hash MD5 a partir dunha cadea.&lt;br /&gt;
&lt;br /&gt;
Ese token deberá engadirse nun campo oculto de cada formulario que se empregue para desencadenar accións no servidor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form action=&amp;quot;conta.php?accion=borra&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;input type=&amp;quot;hidden&amp;quot; value=&amp;quot;&amp;lt;?php echo $_SESSION[&amp;#039;token&amp;#039;]; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Posteriormente, en cada páxina antes de procesar unha acción haberá que comprobar o token.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
session_start();&lt;br /&gt;
if (isset($_REQUEST[&amp;quot;token&amp;quot;]) &amp;amp;&amp;amp; $_REQUEST[&amp;quot;token&amp;quot;] == $_SESSION[&amp;quot;token&amp;quot;]) {&lt;br /&gt;
   // O token é correcto&lt;br /&gt;
   ...&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
   // O token NON é correcto&lt;br /&gt;
   ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Vlourido|Víctor Lourido]] 03:09 20 jul 2013 (CEST)&lt;/div&gt;</summary>
		<author><name>Vlourido</name></author>
	</entry>
</feed>