È sicuro esporre ObjectID MongoDB agli utenti (ad esempio nell'URI)?

5

Sto sviluppando un'API RESTful usando MongoDB come back-end. La cosa più semplice da fare a livello di codice sarebbe semplicemente utilizzare il campo _id di MongoDB nell'URI, ad esempio:

link

So che l'ObjectID è basato in parte sul timestamp della creazione. C'è qualcos'altro che un utente malintenzionato potrebbe ottenere dalla conoscenza dell'ObjectID?

    
posta Ben 23.07.2014 - 01:30
fonte

2 risposte

6

In base alla documentazione di Mongo , per la costruzione di un ObjectId viene utilizzato quanto segue:

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.

Quindi per rispondere alla tua domanda,

Is there anything else an attacker could gain from knowledge of the ObjectID?

Direi che sembra che oltre al timestamp possano determinare anche l'identificatore della macchina, l'id del processo e il valore del contatore.

Assicurati di proteggerti dagli attacchi diretti agli oggetti di riferimento (che dovresti essere facendo comunque).

    
risposta data 23.07.2014 - 02:04
fonte
2

Gli OID di MongoDB sono prevedibili. Pertanto, se si dispone di restrizioni di accesso necessarie, ad esempio non consentendo alla persona A del Gruppo 1 di accedere a oggetti classificati in modo simile appartenenti a persone del Gruppo 2, sarà quindi necessario assicurarsi che l'applicazione applichi queste regole per tutti i punti l'accesso.

Una strategia disastrosa, per esempio, sarebbe quella di memorizzare un OID per un utente nel browser, possibilmente acquisito e memorizzato dopo authZ, e usarlo per authN, poiché tutto ciò che sarebbe necessario per cambiare la tua identità è server sarebbe quello di spostare l'OID memorizzato nel browser per corrispondere a quello di qualcun altro.

    
risposta data 16.10.2016 - 03:32
fonte

Leggi altre domande sui tag