Hay dos medios generales para evitar las referencias a objetos directos no seguros.
Como dice @Rook, la mejor manera es verificar la autorización en todas las solicitudes :), ese es el lugar correcto para resolver el problema.
Si, por alguna razón, no puede hacer eso o quiere una capa adicional de protecciones, podría considerar crear un mapa de acceso, de modo que la referencia presentada a los usuarios no sea directa y no se pueda cambiar. para dar acceso a los datos de otros usuarios.
Para ilustrar este concepto. Supongamos que tenemos una ID de base de datos que va A1..A10000 que son registros para varios usuarios. Cuando el usuario inicia sesión o accede a la página que muestra estos datos, hacemos una consulta de base de datos que devuelve todos los registros a los que deberían tener acceso. Luego, en el servidor creamos una tabla de mapeo
por ejemplo
1 - > A1000
2 --- > A1005
etc
Luego, cuando le damos el ID al usuario, le damos el ID asignado (por ejemplo, 1, 2) y no el ID directo (por ejemplo, A1000, A1005).
Por lo tanto, cuando un usuario realiza una solicitud a la aplicación, solo puede solicitar los ID a los que tiene acceso y no a la pertenencia de otros usuarios (ya que la referencia directa del objeto no está expuesta).