Foros del Web » Programando para Internet » PHP »

Seguridad de uniqid

Estas en el tema de Seguridad de uniqid en el foro de PHP en Foros del Web. Buenas!, Estoy programando una red social donde los usuarios pueden publicar cualquier tipo de contenido. Cuando publican un contenido les asocio un codigo generado con: ...
  #1 (permalink)  
Antiguo 11/12/2016, 23:13
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Seguridad de uniqid

Buenas!,

Estoy programando una red social donde los usuarios pueden publicar cualquier tipo de contenido.

Cuando publican un contenido les asocio un codigo generado con: uniqid().

Luego lo almaceno en la base de datos y siempre que quiero volver a extraer el contenido hago uso de ese código, básicamente para que los usuarios no sepan que ID tiene el contenido.

Mi duda es:

¿Existe algún riesgo por usar uniqid?... se puede duplicar por que 2 usuarios esten metiendo un contenido en el mismo milisegundo?.

La verdad, me parece comodisimo usar uniqid, pero me da un poco de miedo, ya que lo estoy usando en docenas de formularios en la misma web.

:D

Gracias por vuestra ayuda
  #2 (permalink)  
Antiguo 13/12/2016, 11:18
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 4 meses
Puntos: 20
Respuesta: Seguridad de uniqid

Hola amigo, el manual desaconseja su uso para fines de seguridad, y aunque no es tu caso, también dice que uniquid "no crea valores de tipo string aleatorios ni impredecibles".
Por lo que, a mi parecer, tal vez si se pudiera llegar a repetir.
Otra opción podría ser mt_rand()
Saludos!
  #3 (permalink)  
Antiguo 17/12/2016, 19:30
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Respuesta: Seguridad de uniqid

gracias german_1441!
  #4 (permalink)  
Antiguo 18/12/2016, 00:14
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 10 años, 11 meses
Puntos: 10
Respuesta: Seguridad de uniqid

Bueno si quieres apretarle mas puedes intentar con esto:

Código PHP:
Ver original
  1. // semilla de microsegundos para mt_rand();
  2. //del manual de PHP
  3. function make_seed()
  4. {
  5.   list($usec, $sec) = explode(' ', microtime());
  6.   return (float) $sec + ((float) $usec * 100000);
  7. }
  8. mt_srand(make_seed());
  9.  
  10. //tambien poner el parametro 2 a true para mas entropia uniqid()
  11. $id = hash('sha512', uniqid(mt_rand(), true));
  12.  
  13. //Tienes asi 4 cosas:
  14. // semilla para mt_rand()
  15. // mt_rand()
  16. // uniqid() con mas entropia
  17. // sha512 como hash

tambien puedes incluir algo del usuario como $_SERVER['REMOTE_ADDR'] , $_SERVER['HTTP_USER_AGENT'] , $_SERVER['REQUEST_TIME_FLOAT']

Hacer hashes sobre ellos y junto con el uniqid de arriba lo pasas por sha512

Saludos

Última edición por matake; 18/12/2016 a las 00:35
  #5 (permalink)  
Antiguo 22/12/2016, 11:33
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años
Puntos: 19
Respuesta: Seguridad de uniqid

gracias matake :D

Etiquetas: formulario, seguridad, usuario
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 08:36.