¿Es seguro exponer MongoDB ObjectID a los usuarios (por ejemplo, en URI)?

5

Estoy desarrollando una API RESTful utilizando MongoDB como backend. Lo más fácil de hacer programáticamente sería utilizar simplemente el campo _id de MongoDB en el URI, como:

enlace

Sé que el ObjectID se basa en parte en la marca de tiempo de creación. ¿Hay algo más que un atacante pueda obtener con el conocimiento del ObjectID?

    
pregunta Ben 23.07.2014 - 01:30
fuente

2 respuestas

6

Según documentación de Mongo , se utiliza lo siguiente para construir un ObjectId:

ObjectId is a 12-byte BSON type, constructed using:

  a 4-byte value representing the seconds since the Unix epoch,
  a 3-byte machine identifier,
  a 2-byte process id, and
  a 3-byte counter, starting with a random value.

Entonces, para responder a tu pregunta,

  

¿Hay algo más que un atacante pueda obtener del conocimiento de la   ObjectID?

Yo diría que parece que además de la marca de tiempo también podrían determinar el identificador de la máquina, la identificación del proceso y su valor de contador.

Asegúrate de protegerte contra ataques de referencia directa a objetos (que deberías haciendo de todos modos).

    
respondido por el Abe Miessler 23.07.2014 - 02:04
fuente
2

Los OID de MongoDB son predecibles. Por lo tanto, si tiene restricciones de acceso que debe cumplir, como no permitir que la persona A del Grupo 1 acceda a objetos de clase similar pertenecientes a personas del Grupo 2, deberá asegurarse de que su aplicación cumpla estas reglas para todos los puntos de acceso.

Una estrategia desastrosa, por ejemplo, sería almacenar un OID para un usuario en el navegador, posiblemente adquirido y almacenado después de la autenticación, y usarlo para la autenticación, ya que todo lo que sería necesario para cambiar su identidad en el El servidor consistiría en girar el OID almacenado en el navegador para que coincida con el de otra persona.

    
respondido por el Rondo 16.10.2016 - 03:32
fuente

Lea otras preguntas en las etiquetas