DEV Community

Discussion on: What's your experience with text IDs in SQL database?

 
piczmar_0 profile image
Marcin Piczkowski

Thanks for the explanation.

Order numbers is an example that came to my head, but imagine that someone wants to exploit my security mechanism and sees url somedomain/api/images/123, then comes with an idea that image IDs may be auto-incremented and I had a security issue that image access is not protected for only owners of an image. Someone tries somedomain/images/124 and gets an image of the other user. These mistakes happen, with text ID it's harder to guess..

You also wrote that for distributed DBs it makes sense to use UUIDs. We can have the same case when some day my data grows to the amount that I want to create shards, then having incremented IDs I would have to remap them somehow based on shard ID to avoid same IDs on different shards.

I agree that for most cases incremented IDs work fine, but my question was not about pros and cons of using text IDs vs numeric IDs but rather how to properly implement such text IDs.

Thread Thread
 
rolfstreefkerk profile image
Rolf Streefkerk • Edited

You're mixing two different things here. One is database identifier the other is role based security and general security.
If you need to protect image from access, security by obscurity is not the answer. So the fact they can guess the ID's is not the problem, it's your security mechanism that is the issue that needs to be resolved.

How to implement them? UUIDs can be generated. There's a very minuscule chance of collision, also dependent on the implementation you use. So that would be a first to research, a good library for v4 UUID's

Thread Thread
 
piczmar_0 profile image
Marcin Piczkowski

I understand the difference between security and DB IDs, but again, would you agree with me on the statement that it's easier to uncover the security issue with auto-incremented IDs?

I know how to generate UUIDs but again, the question was about other mechanisms to generate text IDs than UUIDs.

Anyway, I got the answer from others in the comments so thanks for your time spent on helping me.

Thread Thread
 
rolfstreefkerk profile image
Rolf Streefkerk

No, auto incremented IDs or not does not have any bearing on security whatsoever. As I've already mentioned, obscurity does not equal security. Just because you choose a random identifier does not make it suddenly more secure.
Your statement would only be correct if it is indeed obscurity that was the only mechanism of protection.

I would say if there's a business need for certain identifier to exist, that should be the primary reason next to any technical requirement that may arise due to sharding/distributed data storage.