+1 per la risposta di Sergio, in termini di risposta se possono essere indovinati o meno, non sono hash, sono prevedibili, quindi possono essere "brute forzate" dato il tempo necessario. La verosimiglianza dipende da come sono stati generati gli ObjectID e da come si va a indovinare. Per spiegare, prima, di leggere le specifiche qui:
http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-BSONObjectIDSpecification
Cerchiamo quindi scomposizione pezzo per pezzo:
- TimeStamp - del tutto prevedibile fino a quando si ha un'idea generale di quando il i dati sono stati generati
- Macchina - questo è un hash MD5 di una delle varie opzioni, alcune delle quali sono più facilmente determinate di altre, ma altamente dipendenti dall'ambiente
- PID - di nuovo, non un numero enorme di va lue qui, e potrebbe essere sleuthed per dati generati da una fonte nota
- Incremento - se questo è un numero casuale piuttosto che un incremento (entrambi permessi), allora è meno prevedibile
Per espandere un po ' sulle fonti. ObjectIds può essere generato da:
- MongoDB in sé (ma possono essere migrati, spostato, aggiornamento)
- Il conducente (su qualsiasi macchina che inserisce o aggiorna i dati)
- delle applicazioni (è possibile inserire manualmente il proprio ObjectID se lo si desidera)
Quindi, ci sono cose che potete fare per renderli più difficili da indovinare individualmente, ma senza un sacco di accortezza e garanzie, per un insieme di dati normale, gli intervalli di objectIds valide dovrebbero essere abbastanza facile da elaborare poiché sono tutti preceduti da un timestamp (a meno che tu non stia manipolando questo in qualche modo).
fonte
2012-07-20 10:56:55