Foros del Web » Programando para Internet » PHP »

token csrf

Estas en el tema de token csrf en el foro de PHP en Foros del Web. Buenas, Para prevenir los ataques csrf en los formularios inserto token con un tiempo de tres minutos. Queria insertar el token en el nuevo sistema ...
  #1 (permalink)  
Antiguo 18/02/2013, 17:31
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años
Puntos: 2
token csrf

Buenas,

Para prevenir los ataques csrf en los formularios inserto token con un tiempo de tres minutos. Queria insertar el token en el nuevo sistema de comentario que programe, pero, después me puse a pensar que si pasan los tres minutos tendrán que refrescar la web y esto puede volverse un poco pesado. Alguien sabe otra forma que pueda hacerlo.

Codigo token:

Código PHP:
Ver original
  1. session_start();
  2. $token = md5(uniqid(rand(), TRUE));
  3. $_SESSION['token'] = $token;
  4. $_SESSION['token_time'] = time();
  5.  
  6. esto va en el formulario
  7. <input type="hidden" name="token" value="<?php echo $token; ?>" />
  8.  
  9.  
  10. //pagina que valida
  11.  
  12. if (isset($_SESSION['token']) &&
  13. $_POST['token'] == $_SESSION['token'])
  14. {
  15. //token es valido
  16. }


un saludo
  #2 (permalink)  
Antiguo 18/02/2013, 17:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: token csrf

Aumenta el tiempo entonces, si buscas seguridad no puedes andar haciendo favores a los usuarios, las reglas del juego son simples.

Además, ¿dónde está la comparación de tiempo que argumentas?

Yo no veo que hagas eso de "que dure 3 minutos" por ningún lado.

Mientras no ejecutes dicha lógica no vas a tener el problema que imaginas tener.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/02/2013, 17:51
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 7 meses
Puntos: 270
Respuesta: token csrf

Actualizala por Ajax.
  #4 (permalink)  
Antiguo 19/02/2013, 05:34
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años
Puntos: 2
Respuesta: token csrf

Cita:
Iniciado por pateketrueke Ver Mensaje
Aumenta el tiempo entonces, si buscas seguridad no puedes andar haciendo favores a los usuarios, las reglas del juego son simples.
pero como hace facebook en la parte donde permite dejar mensajes, ya que yo muchas veces deje la web abierta mucho tiempo y sin actualizar pude enviar un mensaje.

Cita:
Iniciado por pateketrueke Ver Mensaje

Además, ¿dónde está la comparación de tiempo que argumentas?

Yo no veo que hagas eso de "que dure 3 minutos" por ningún lado.
me olvide de copiar una parte

Código PHP:
Ver original
  1. $time = 180; // 3 minutos
  2.  
  3. $token_age = time() - $_SESSION['token_time'];
  4. f($token_age >= $time){
  5.   return false;
  6. }
  #5 (permalink)  
Antiguo 19/02/2013, 10:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: token csrf

Pues lo de actualizar periódicamente el token usando Ajax es buena idea, yo también lo haría así.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 19/02/2013, 14:27
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años
Puntos: 2
Respuesta: token csrf

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues lo de actualizar periódicamente el token usando Ajax es buena idea, yo también lo haría así.
podrías poner un ejemplo de como hacerlo.

Un saludo
  #7 (permalink)  
Antiguo 19/02/2013, 14:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: token csrf

Hmmm, si no se te ocurre cómo entonces si estás grave.

Imagino que guardas el token en algún elemento del markup, so, con setInterval() puedes ejecutar una función en el intervalo de tiempo que definas.

Ahora, con jQuery (espero) haces una llamada común y corriente, de esas que ya sabes hacer cuando empleas Ajax, lo que debe hacer el script de recepción es actualizar el token en sesión y devolverlo a la vez.

Al recibir el resultado, la función callback que empleaste con jQuery utiliza el valor devuelto para actualizar el valor del token en el elemento que uses de tu markup.

¡Mas claro ni el agua!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 21/02/2013, 03:16
 
Fecha de Ingreso: noviembre-2007
Mensajes: 471
Antigüedad: 17 años
Puntos: 2
Respuesta: token csrf

Lo probare, gracias.

Etiquetas: formulario, token
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:31.