Loading
_ DESCIFRANDO CONEXIÓN SEGURA...

Métodos, idempotencia y códigos de estado

5 tareas · 38 min · Principiante

El método dice qué intención tiene una petición y el código de estado dice qué hizo el servidor con ella. Juntos son el resumen más rápido de una aplicación: qué cambia datos, qué falla, qué se niega y a quién. En esta sala se lee el registro de acceso que dejó la revisión autorizada de Discos Almagre, con un navegador con sesión y otro sin ella, y dos respuestas guardadas. Se buscan las acciones que usan el método equivocado y se leen los códigos como lo haría quien tiene que corregir. No se envía ninguna petición.

0 de 5 · 0%

Objetivo de la sala

El método dice qué intención tiene una petición y el código de estado dice qué hizo el servidor con ella. Juntos son el resumen más rápido de una aplicación: qué cambia datos, qué falla, qué se niega y a quién. En esta sala se lee el registro de acceso que dejó la revisión autorizada de Discos Almagre, con un navegador con sesión y otro sin ella, y dos respuestas guardadas. Se buscan las acciones que usan el método equivocado y se leen los códigos como lo haría quien tiene que corregir. No se envía ninguna petición.

La especificación de la semántica de HTTP (RFC 9110) clasifica los métodos con dos propiedades. Un método seguro es de solo lectura por definición: quien lo envía no espera cambiar nada en el servidor. Son seguros GET, HEAD, OPTIONS y TRACE. Un método idempotente puede repetirse y el efecto final es el mismo que si se hubiera enviado una vez: lo son todos los seguros y, además, PUT y DELETE (borrar dos veces el mismo recurso deja el mismo resultado que borrarlo una vez).

Esto importa al auditor por una razón práctica: navegadores, proxies y clientes reintentan o adelantan peticiones idempotentes sin preguntar, porque la especificación les dice que pueden. Si la aplicación cambia datos con un método que el resto del mundo considera repetible o de solo lectura, alguien acabará disparando ese cambio sin querer.

Responde para continuar

Según la semántica de HTTP, ¿cuál de estos métodos NO es idempotente?

Ver pista de ayuda

Dos envíos de este método pueden crear dos recursos distintos, por ejemplo dos pedidos.

Que un GET cambie datos es un fallo de diseño aunque funcione. Un enlace de ese tipo lo puede seguir un buscador que indexa la página, una extensión que precarga enlaces para ir más rápido, una vista previa de un chat o una página ajena que lo incrusta como imagen; en todos esos casos el cambio ocurre sin que la persona lo decida. Lo correcto es que toda acción que cambia estado vaya por POST (o PUT, PATCH, DELETE) y con su protección contra peticiones no deseadas, que se estudia más adelante en la ruta.

Abre registro-acceso.log. Cada línea dice quién, cuándo, qué método, qué ruta y qué respondió el servidor. Busca una acción de la lista de deseos.

Responde para continuar

¿Qué ruta del registro cambia la lista de deseos de la cuenta usando GET? Escríbela sin la cadena de consulta.

Ver pista de ayuda

Agregar a la lista va por POST. La operación contraria no.

El primer dígito del código de estado dice la familia: 1xx informativo, 2xx éxito, 3xx redirección (el navegador debe ir a otra parte), 4xx error atribuible a la petición o a quien la hace, y 5xx error del servidor. Una aplicación sana tiene pocos 5xx; muchos seguidos indican que algo detrás (una API interna, una base, un servicio de pagos) está fallando, y un fallo del servidor puede dejar operaciones a medias. Por eso el auditor cuenta los 5xx y mira qué rutas tocan, antes de mirar cualquier otra cosa.

Cuenta en el registro las respuestas cuyo código empieza por 5.

Responde para continuar

¿Cuántas respuestas de la familia 5xx tiene el registro de acceso? Escribe solo el número.

Ver pista de ayuda

El código es el número de tres cifras que va justo después de las comillas de cierre.

Dos códigos de la familia 4xx se confunden a menudo y dicen cosas distintas. 401 significa que la petición no trae una autenticación válida: el servidor no sabe quién pregunta. 403 significa que el servidor entendió la petición y se niega a atenderla; si hay sesión, sabe quién es y aun así no le da permiso. Muchas aplicaciones web, en lugar de un 401, redirigen a la página de entrada con un 302. Leer bien el código evita informar como «control de acceso roto» lo que en realidad es un control funcionando.

En el registro, la cuenta de prueba pide /panel/inventario, y el navegador sin sesión pide /cuenta/mis-pedidos y /api/pedidos/AL-20417.

Responde para continuar

¿Qué dice el registro sobre la petición de lectora.prueba a /panel/inventario?

Ver pista de ayuda

Mira el usuario de la línea y el código que recibió.

Si el servidor respondiera a un pago con la página de confirmación directamente, recargar esa página haría que el navegador ofreciera reenviar el formulario, y con él el pago. La práctica sana es la contraria: tras recibir el formulario, el servidor responde con una redirección que obliga al navegador a pedir la página siguiente con GET. Así, recargar solo repite la lectura. Entre las redirecciones hay códigos que conservan el método original y otros que lo cambian a GET; el auditor anota cuál usa cada formulario que mueve dinero.

Abre respuesta-pago.http.

Responde para continuar

¿Con qué código de estado responde la tienda al formulario de pago que funcionó? Escribe solo el número.

Ver pista de ayuda

Está en la primera línea de la respuesta, antes de Location.

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