Esistono due metodi generali per evitare riferimenti a oggetti diretti insicuri.
Come @Rook dice che il modo migliore è Controllare l'autorizzazione su tutte le richieste :), questo è il posto giusto per risolvere il problema.
Se, per qualche ragione, non puoi farlo o vuoi un ulteriore livello di protezione potresti prendere in considerazione la creazione di una mappa di accesso, in modo che il riferimento presentato agli utenti non sia diretto e non possa essere modificato per dare accesso ai dati di altri utenti.
Per illustrare questo concetto. Diciamo che abbiamo un ID del database che va A1..A10000, che sono record per un numero di utenti. Quando l'utente accede o accede alla pagina che mostra loro questi dati, eseguiamo una query di database che restituisce tutti i record a cui dovrebbe avere accesso. Quindi sul server creiamo una tabella di mappatura
es
1 - > A1000
2 --- > A1005
etc
Quindi, quando forniamo l'ID all'utente, forniamo loro l'ID mappato (ad es. 1, 2) e non l'ID diretto (ad esempio A1000, A1005).
Quindi quando un utente fa una richiesta all'applicazione può solo richiedere gli ID a cui ha accesso e non la propria appartenenza ad altri utenti (poiché il riferimento diretto all'oggetto non è esposto ..)