Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Respuestas de error útiles sin revelar internos

5 tareas · 35 min · Principiante

Un error bien contado le dice a quien lo recibe qué puede hacer y le da a soporte una forma de encontrar el detalle; uno mal contado entrega la consulta, el archivo o el servidor que falló, o deja adivinar lo que no debería. En el módulo de endurecimiento viste la traza en una página web; aquí el problema es el contrato de errores de una API. Droguería Siemprevida te entrega ocho respuestas de error de su API móvil, capturadas por su equipo de calidad en preproducción, el registro de ese día y el borrador de su contrato de errores.

0 de 5 · 0%

Objetivo de la sala

Un error bien contado le dice a quien lo recibe qué puede hacer y le da a soporte una forma de encontrar el detalle; uno mal contado entrega la consulta, el archivo o el servidor que falló, o deja adivinar lo que no debería. En el módulo de endurecimiento viste la traza en una página web; aquí el problema es el contrato de errores de una API. Droguería Siemprevida te entrega ocho respuestas de error de su API móvil, capturadas por su equipo de calidad en preproducción, el registro de ese día y el borrador de su contrato de errores.

Para las API existe un formato estándar de error: el detalle de problema para HTTP, publicado por la IETF como RFC 9457, que reemplazó al RFC 7807. Es un objeto JSON con tipo de contenido application/problem+json y unos pocos miembros: type identifica la clase de problema, title lo resume de forma estable, status repite el código HTTP, detail explica esta ocurrencia concreta y instance identifica esta ocurrencia. El propio estándar pide que detail ayude al cliente a corregir el problema, no a depurar el servidor, y advierte contra exponer trazas o detalles de la implementación.

La pieza que hace útil el error sin hacerlo peligroso es el identificador del incidente: el cliente lo recibe en instance, el registro lo guarda junto a la excepción completa, y soporte une los dos sin que el cliente vea nada interno.

Responde para continuar

En el formato de detalle de problema, ¿para qué sirve el miembro detail?

Ver pista de ayuda

Piensa en quién lee la respuesta: el cliente, no el equipo que mantiene el servidor.

Abre el laboratorio y lee respuestas-api.txt. Algunas capturas siguen el contrato; otras devuelven tal cual el mensaje de la librería que falló. El de la base de datos es el más generoso: dice qué restricción se violó y en qué tabla vive, y con eso cualquiera empieza a dibujar el modelo de datos de la tienda.

Responde para continuar

Una captura revela el nombre de una tabla de la base de datos. ¿Cuál? Escríbelo tal como aparece, sin el nombre del índice que lo acompaña.

Ver pista de ayuda

Busca el mensaje que empieza por SQLSTATE; el nombre de la tabla va antes del punto.

La captura del pago fallido es el ejemplo que el resto de la API debería seguir: el cliente sabe que no se le cobró, sabe qué hacer y tiene un código para soporte, y no ve nada de cómo está construida la tienda. Comprueba que el diseño funciona del otro lado: con el identificador de esa respuesta, busca en registro-aplicacion.txt qué pasó de verdad.

Responde para continuar

La captura del pago fallido solo le da al cliente un identificador del incidente. ¿Qué excepción lo produjo según el registro? Escribe su nombre.

Ver pista de ayuda

El identificador está en el miembro instance de la captura 5.

No todo lo que sobra en un error es un nombre de servidor. Dos respuestas distintas para dos situaciones que el cliente no debería poder separar también filtran información: quien prueba códigos al azar aprende cuáles existen. El punto 5 del contrato de Siemprevida lo prevé, y dos capturas del mismo servicio no lo cumplen.

Responde para continuar

¿Qué problema tienen juntas las capturas 3 y 4?

Ver pista de ayuda

Pregúntate qué aprende alguien que prueba muchos códigos de cupón distintos.

Para el informe hace falta el alcance: cuántas de las ocho respuestas no cumplen el punto 3 del contrato. Revisa cada captura y marca las que entregan al cliente algo de la construcción interna de la tienda: una consulta o un mensaje del motor de base de datos, una ruta de archivo, un nombre de servidor o el mensaje crudo de una librería.

Responde para continuar

¿Cuántas capturas devuelven al cliente algún detalle de la construcción interna de la tienda?

Ver pista de ayuda

Las capturas 3 y 4 cuentan algo de más, pero no sobre cómo está construida la tienda.

Inicia sesión para registrar tus puntos y progreso en el ranking.

Whoami-Labs Pro

Whoami-Labs Pro utiliza cookies

Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad