Es un hecho conocido que la exposición de la información de excepción al usuario final ofrece riesgos de seguridad, ya que un adversario puede usarlo para averiguar cómo funcionan las cosas internamente y atacarlas. Pero ¿qué pasa con un servicio web, donde esa información podría ser relevante para los desarrolladores que consumen la API?
Por un lado, exponer el seguimiento de pila completo e incluso el mensaje es arriesgado, ya que podría contener cierta información de la base de datos, por ejemplo. por otro lado, si algo sale mal y el servidor simplemente dice 500 "lo siento", los desarrolladores se sentirían frustrados. Supongo que realmente la forma correcta es manejar todas las excepciones que conoce de manera segura, es decir, detectar excepciones de validación / negocios y devolverlas con códigos y mensajes de error especiales (sin pila de seguimiento) y, para todos los desconocidos, todavía tiene 500 "disculpas".
Pero me gustaría aquí cuáles son las formas comunes de hacerlo y qué enfoque se debe tomar desde el punto de vista de la seguridad.