Descargo de responsabilidad: sí, he comprobado la ¿Qué códigos de estado HTTP son interesantes desde el punto de vista de seguridad? que suena relevante pero no del todo.
En estos días se supone que es una buena práctica no divulgar datos adicionales para usuarios no autenticados. Por ejemplo: direcciones de correo electrónico para la función "contraseña olvidada": cuando en lugar de decir "este correo electrónico no está registrado", le informamos que un usuario no está allí o que siempre devuelve el mismo mensaje como "revise su correo electrónico con el enlace para restablecer la contraseña ".
Hasta ahora todo bien.
Pero, ¿qué pasa con los códigos de estado HTTP, más detalles: para 404 vs 403.
Supongamos que tienes un área segura donde varias personas tienen acceso diferente. Digamos que es una gestión de usuarios para múltiples organizaciones.
Y si tiene una clave principal basada en una secuencia para los usuarios que se usa en el enlace al perfil del usuario, por ejemplo: /admin/users/42
, entonces puede iterar sobre el contador y comparar el código de respuesta de estado 404, para el que no existe, 403 para Los existentes determinan cuántos usuarios hay.
Es un ejemplo simple y creo que hay muchas cosas similares en todo.
Entonces, la pregunta: ¿deberíamos preferir la seguridad sobre la semántica y usar solo 403 (o 404) exclusivamente en todos los casos?