Supongamos que hay un sitio web con una API que admite la siguiente llamada REST en la que el usuario autenticado Alice puede enviar un mensaje a Bob al usuario registrado que registró en nuestro sitio (hipotéticamente hablando, por el bien de este ejemplo) ):
curl --header "Authorization: JWT $someTokenForAuthz" \
--header "Content-Type: application/json" \
--request POST \
--data '{"phone":"+43 123 456","msg":"some text"}'
http://example.com/text/send
Supongamos que clasificamos el número de teléfono como datos confidenciales (PII) y supongamos que la API devuelve la siguiente respuesta en caso de que se envíe un número de teléfono que no se haya registrado en el sitio:
{"error": {"code":404,"message":"Phone number not found"}}
Imagínese a Eve escribiendo un guión que recorre los números de teléfono celular del +43 000 001 al +43 999 999 (ignorando las limitaciones de los números de teléfono del mundo real). Con el código de error y después de 1 000 000 iteraciones de su script, Eve ha enumerado todos los números registrados en el sitio y puede, por ejemplo, orientar los usuarios del sitio de una manera más específica.
¿Es un problema de seguridad devolver un código de error HTTP 404 cuando no se encontraron datos confidenciales como un número de teléfono celular en nuestro sistema? ¿Cuál sería una mejor manera en términos de manejo de errores (como ¿Una estrategia de copia de seguridad en caso de que los mecanismos de detección / límites de solicitud que ya están implementados puedan fallar) para evitar este descubrimiento de datos confidenciales? ¿Un error 401 - not authorized
más general o algo completamente diferente?