phpsqlsecurity-by-obscurity

Should i obscure database primary keys (id's) in application front end


I'm working on an application which allows a moderator to edit information of user. So, at the moment, i have URL's like

http://xxx.xxx/user/1/edit
http://xxx.xxx/user/2/edit

I'm a bit worried here, as i'm directly exposing the users table primary key (id) from database. I simply take the id from the URL's (eg: 1 and 2 from above URL's), query the database with the ID and get user information (of course, i sanitize the input i.e ID from URL).

Please note that:

I'm validating every request to check if moderator has access to edit that user

This is what i'm doing. Is this safe? If not, how should i be doing it?

I can think of one alternative i.e. have a separate column for users table with 25 character key and use the keys in URL's and query database with those keys

But,


Solution

  • This is safe (and seems to be the best way to do it) as long as the validation of the admin rights is correct and you have prevention for SQL injection. Both of which you mention so I'd say you're good.