Un nota OWASP suggerisce che i riferimenti diretti agli oggetti sono considerati insicuri in alcuni contesti. Hanno definito "riferimento diretto all'oggetto" come segue:
“A direct object reference occurs when a developer exposes a reference to an internal implementation object, such as a file, directory, database record, or key, as a URL or form parameter.”
Qualcuno suggerisce una soluzione a questo problema:
An object reference map is first populated with a list of authorized values which are temporarily stored in the session. When the user requests a field (ex: color=654321), the application does a lookup in this map from the session to determine the appropriate column name. If the value does not exist in this limited map, the user is not authorized. Reference maps should not be global (i.e. include every possible value), they are temporary maps/dictionaries that are only ever populated with authorized values.
Tuttavia, qualcun altro sostiene sul Wiki che i DOR sono davvero insicuri solo per i file, le directory. Quella persona aggiunge:
There is no way to practically DOR all database primary keys in a real enterprise or post-enterprise system.
La mia domanda è: quanto sono insicuri i riferimenti diretti agli oggetti alle chiavi primarie del database? Potete fornire esempi concreti di vulnerabilità? Con quale frequenza le persone vanno a lunghezze straordinarie (come suggerito dalla prima persona) per mascherare TUTTE le chiavi del database?