Say I have a Products array in my Mongodb. I’d like users to be able to see each product on their own page: http://www.mysite.com/product/12345/Widget-Wodget. Since each Product doesn’t have an incremental integer ID (12345) but instead it has a BSON ID (5063a36bdeb13f7505000630), I’d need to either add the integer ID or use the BSON ID.
Since BSON ID’s include the PID:
- 4-byte timestamp,
- 3-byte machine identifier,
- 2-byte process id,
- 3-byte counter.
Am I exposing secure information to the outside world if I use the BSON ID in my url?
I can’t think of any use to gain privileges on your machines, however using ObjectIds everywhere discloses a lot of information nonetheless.
By crawling your website, one could:
To be fair, even with random ids one can infer a lot. The main issue is that you need to prevent anyone from scraping a statistically significant part of your site. But if someone is determined, they’ll succeed eventually, which is why providing them with all of this extra, timestamped info seems wrong.