CAPITULO 10  CROSS SITE REQUEST FORGERY 
CSRF ,  digamos que es la capacidad para engañar a un usuario a que realice una accion sin su consentimiento, puede haber acciones de nivel bajo , cambiar idioma , cerrar la session etc... y mas serios como cambiar la contraseña , retirar fondos , cambio de direccion postal , compras etc........ 
Estos ataques suelen ser enviados a la victima mediante emails, redes sociales ,privados etc.... 
Para evitar este ataque y prevenir a los usuarios de falsas peticiones , vamos a generar un token de session generado en todas las peticiones. 
A la practica pues.... 
1 mostrare un ejemplo vulnerable y despues veremos la implementacion del token 
perfil.php     
Código PHP:
Ver original<?php
 
if(isset($_SESSION['USUARIO'])) {
    // contenido del perfil 
        echo 'Bienvenido "'.$_SESSION['USUARIO'].'"';
    echo '<a href="logout.php">salir</a>';
}
else
{
     echo 'no tienes suficientes permisos para ver esta pagina';
}
?>
  
logout.php (vulnerable)    
Código PHP:
Ver original<?php
echo 'Has cerrado la session';
?>
  
ejemplo de ataque    
Código PHP:
Ver original<html>
 <body>
  <p>una imagen muy chula amigo!!</p> 
  <img src="logout.php" style="display: none;">
 </body>
</html>
  
directamente cerrariamos la session ya que la imagen envia una peticion al servidor para acceder a logout.php y en logout no hay ninguna validacion de que el usuario halla pedido cerrar session. 
soluciones 
perfil.php    
Código PHP:
Ver original<?php
 
if(isset($_SESSION['USUARIO'])) {
 
    // contenido del perfil 
    echo 'Bienvenido "'.$_SESSION['USUARIO'].'"';
    echo '<a href="logout.php?token='.$_SESSION['TOKEN'].'">salir</a>';
}
else
{
    echo 'no tienes suficientes permisos para ver esta pagina';
}
?>
  
logout.php     
Código PHP:
Ver original<?php
 
if(isset($_SESSION['USUARIO']) and 
isset($_SESSION['TOKEN']) and 
isset($_GET['token']) and 
$_GET['token'] == $_SESSION['TOKEN']) {
    echo 'Has cerrado la session';
}
else
{
}
 
?>
  
Una vez implementado el token el ejemplo de ataque no tendria ningun resultado ya no se cerraria la session evitando asi CSRF. 
Bueno eso es todo espero que sriva de inspiracion para crear buenas defensas CSRF. 
Eso es todo sobre el capitulo 10 , si sabes otras maneras o mejorar lo expuesto o solo deseas mostrar tu opinion por favor exponlo.  
Saludos nos vemos nuevamente con el capitulo 11. 
1 - proteger directorios :link 
http://www.forosdelweb.com/f18/segur...ml#post4410846
2 - mensajes de error : link 
http://www.forosdelweb.com/f18/segur...ml#post4412140
3 - archivo de configuracion : link 
http://www.forosdelweb.com/f18/segur...ml#post4412159
4 - permisos y roles : link 
http://www.forosdelweb.com/f18/segur...ml#post4412275
5 - verificacion de archivos : link 
http://www.forosdelweb.com/f18/segur...ml#post4412596
6 - configuracion de sessiones : link 
http://www.forosdelweb.com/f18/segur...ml#post4416219
7 - session hijacking : link 
http://www.forosdelweb.com/f18/segur...ml#post4419281
8 - hash de contraseñas : link 
http://www.forosdelweb.com/f18/segur...ml#post4421471
9 - inyeccion sql  : link 
http://www.forosdelweb.com/f18/segur...ml#post4451398