[Resuelto] Tokens por sesion para hacer mas dificil falsificar peticiones

Iniciado por tecasoft, 6 Mayo 2013, 21:45 PM

0 Miembros y 1 Visitante están viendo este tema.

#!drvy

Citarveis algun inconveniente que utilice el referer solo?

Si... es spoofeable y hay usuarios/navegadores que no lo mandan para que les sea mas difícil hacerles seguimiento.. es una cabecera de la que no hay que fiarse..

http://www.php.net/manual/es/function.session-set-cookie-params.php

PD: También puedes pasar la session por URL...
http://php.net/manual/es/session.idpassing.php

Saludos

tecasoft

http://www.php.net/manual/es/function.session-set-cookie-params.php en el php.ini me marca 1440 es decir 24 minutos pero lo he probado y tarda unos 30 o 40 minutos eso xk es?




ha quedado asi y funciona a la perfeccion el ejemplo,gracias x la colaboracion:

Código (php) [Seleccionar]

<?php
session_set_cookie_params
(0);
session_start();
// Generar un sha1 aleatorio.
$token sha1(rand(0,999).rand(999,9999).rand(1,300));
$_SESSION['token'] = $token;
 
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>PoC</title>
</head>
<body>
    <form action="post.php" method="POST">
        <input type="text" name="usuario" />
        <input type="password" name="password" />
        <input type="hidden" name="token" value="<?php echo $token?>" />
        <input type="submit" value="Enviar" />
    </form>
</body>
</html>


Código (php) [Seleccionar]

<?php
session_start
();


if(empty(
$_SESSION['token']) || empty($_POST['token']) || !preg_match('/[0-9a-f]/',substr($_POST['token'],0,40)) || $_SESSION['token']!==$_POST['token'] || $_SERVER['HTTP_REFERER'] !== "http://192.168.1.2/prueba/tokens_referer/enviar.php")
{
   echo 
'Los tokens o el referer no son correctos.';
}
else
{
echo 
'Tu consulta ha sido realizada';
echo 
"<br>";
echo 
$_SERVER['HTTP_REFERER'];
}
?>



Mod: No hacer doble post.
http://www.tecasoft.com Un ninja del hacking etico, programacion en html5, css3, javascript, jquery, php, python, c/c++, ensamblador, ingenieria reversa,a auditorias de seguridad, pentesting, exploits

boxccs

Buenas, estoy intentando entender un poco sobre los tokens pero el formulario de ejemplo que coloco tecasoft, no le veo el mas mínimo sentido, se está usando el token como un capcha ? O algo así? Que tipo de seguridad podría aportar?



daryo

es para evitar una vulnerabilidad web conocidad como csrf. http://es.wikipedia.org/wiki/Cross_Site_Request_Forgery


imagna que yo quiero hacer que cierres sesion, cambies tu clave o cualquier cosa en un foro entonces yo te envio un enlace como este.

http://foro.elhacker.net/logout.html

lo abres y ya sin querer cerraste sesion(bue es un ejemplo pero se pueden hacer cosas mas peligrosas xD)

pero si la pagina en cuestion pidiera tokens es decir una secuencia de caracteres aleatoria que cambia por cada inicio de sesion entonces tu abres el link y amenos que tengas el token no pasa nada

el token de sesion que tengo ahora y el enlace tendria que ser asi (diferente por cada sesion)xD:
http://foro.elhacker.net/logout.html;sesc=XXXXXX
buenas