Todas las lecciones Read in English

Seguridad a fondo · Unidad 20 · Lección 1 de 27

HTTP y proxies

Lee solicitudes, comprende las cookies y separa la protección del transporte de los permisos.

12 minlista

Para prepararteAplicaciones web

Después de esta lección puedes

  • explicar juntos métodos, códigos de estado y cuerpos de respuesta
  • distinguir reglas de cookies, sesiones y decisiones de acceso
  • describir qué protegen un proxy y TLS

Una página puede generar muchos intercambios HTTP: cargar una imagen, consultar una cesta o guardar una dirección. Leer una solicitud y su respuesta ayuda a explicar qué ocurrió. Por sí solo, eso no demuestra que la decisión de seguridad fuera correcta.

Lee toda la conversaciónSolicitud: Método, destino, cabeceras y datos. Decisión del servidor: Identidad, permiso y lógica de aplicación. Respuesta: Estado, cabeceras y representaciónLee toda la conversación1SolicitudMétodo, destino, cabeceras y datos2Decisión del servidorIdentidad, permiso y lógica deaplicación3RespuestaEstado, cabeceras y representación
Sigue una solicitud, la decisión de la aplicación y su respuesta.
GET /catalog HTTP/1.11
Host: books.example2

HTTP/1.1 200 OK3
Content-Type: application/json4
{"items":3}5
  1. Método y destino: consultar el catálogo público.
  2. Nombre ficticio del servicio; distingue sitios que comparten dirección.
  3. El servidor comunica éxito; esto no es una auditoría de autorización.
  4. Tipo de contenido previsto para esta representación.
  5. Datos ficticios. Hay que interpretar contenido, estado y cabeceras juntos.

EXPLORA EL CONCEPTO

¿Qué demuestra esta respuesta?

Elige una respuesta y separa su significado de la decisión de permisos.

HEAD exitoso

Puede comunicar éxito y metadatos de la representación sin cuerpo de contenido. El estado no demuestra por sí solo autorización correcta.

Rechazo 403

El servidor rechaza la solicitud. Puede deberse a una regla de intermediario o aplicación; no establece que exista un recurso concreto.

Recibo en caché

Un recibo privado necesita reglas adecuadas de almacenamiento y uso compartido. Identifica si quedó en el navegador, aplicación o caché compartida antes de atribuir la causa.

Modelo simplificado para aprender. No se conecta a sistemas ni usa datos reales.

La solicitud describe una operación

El método expresa la operación prevista. El destino identifica el recurso; las cabeceras llevan metadatos; algunas solicitudes incluyen un cuerpo. Las versiones de HTTP codifican estos elementos de forma distinta, pero conservan una semántica compartida.

GET se define como seguro: el cliente solicita recuperar información, no cambiar estado. Registrar esa consulta en un log es compatible con la definición. Un GET que elimina una cuenta incumple esa intención y crea riesgos por recuperaciones automáticas. Idempotencia significa que repetir una operación tiene el mismo efecto previsto que hacerla una vez; las respuestas y los registros pueden variar. Consulta la semántica HTTP.

El estado no cuenta toda la historia

Un código 2xx comunica éxito según su significado; no demuestra autorización correcta. Una respuesta HEAD exitosa no lleva cuerpo de contenido. Un 3xx tampoco siempre redirige: 304 se relaciona con la validación de caché.

401 indica credenciales de autenticación ausentes o inválidas; 403 expresa que el servidor rechaza la solicitud. Una aplicación puede usar 404 para ocultar la existencia de un recurso. Combina comportamiento documentado, cuerpo de respuesta y evidencia del servidor.

Las cookies transportan valores

Una cookie puede guardar una preferencia, un identificador de sesión u otro estado. Secure restringe su envío a canales seguros; HttpOnly impide leerla mediante las API de cookies de JavaScript; SameSite afecta su envío entre sitios. Domain y Path delimitan la entrega, pero Path no aísla de forma fiable aplicaciones distintas.

Estos atributos complementan la caducidad de sesión y la autorización. No establecen si el usuario puede leer un recibo concreto.

TLS y los proxies tienen funciones distintas

TLS protege la conexión frente a observación y modificación en la red cuando se validan correctamente los extremos y la confianza. No decide si un reembolso es legítimo. Un proxy directo sirve a clientes; uno inverso se sitúa delante de servicios. Un proxy de depuración solo inspecciona HTTPS cuando el cliente y el tráfico están configurados para usarlo y confiar en él. Algunas conexiones simplemente pasan por un túnel.

Solo proxies designados como confiables deben aportar información de reenvío relacionada con la identidad; la aplicación debe gestionar coherentemente los valores externos no confiables.

Escenario: el recibo que quedó guardado

Mina cierra sesión en una tableta compartida. La siguiente persona ve su recibo. Las posibles causas incluyen estado de aplicación, historial, caché local o caché compartida. El equipo identifica dónde quedó la información antes de elegir el control.

Guardar una respuesta autenticada en caché no es inseguro automáticamente: importan su sensibilidad y las reglas de uso compartido. CORS es otra frontera: regula el acceso del navegador a respuestas de otros orígenes. Fetch no permite compartir respuestas con credenciales mediante un origen comodín; el navegador rechaza esa combinación. La autorización del servidor sigue siendo necesaria.

Una nota útil identifica la operación, el permiso esperado, el resultado y el componente que aportó la evidencia.

Elige una política a partir de un requisito concreto

La tienda ficticia tiene dos requisitos. Las respuestas del catálogo público pueden reutilizarse durante sesenta segundos. Las cachés HTTP no deben almacenar recibos. Compara estas propuestas para los recibos:

Propuesta Qué controla
private Excluye el almacenamiento en cachés compartidas; una privada puede almacenarla.
no-cache Exige validación correcta antes de reutilizarla; permite almacenarla.
no-store Indica a las cachés HTTP que no almacenen la respuesta.

Para el catálogo público no personalizado, public, max-age=60 permite almacenamiento compartido y sesenta segundos de vigencia, según las reglas de caché HTTP. Es la política de esta tienda, no una recomendación para todo catálogo. Solo la tercera propuesta para recibos cumple su requisito de no almacenamiento. Son directivas de respuesta sin argumentos de nombres de campos. Regulan cachés HTTP que respetan el protocolo; no son órdenes de borrado de capturas de pantalla, archivos exportados ni todo el almacenamiento gestionado por la aplicación.

PrediceEl equipo añade no-store a los recibos futuros. ¿Puede cerrar inmediatamente el problema de la tableta compartida?

Ha elegido la política HTTP correspondiente, pero debe identificar la copia mostrada y verificar el ciclo de vida afectado. Las cabeceras nuevas no prueban que haya desaparecido una copia de la aplicación, una entrada del historial o un archivo exportado.

Sigue también las conexiones. Supón que TLS termina en el proxy inverso de la tienda, que abre otra conexión con la aplicación. La validación del certificado por el navegador cubre la conexión entre navegador y proxy. El tramo entre proxy y aplicación necesita su propia protección documentada y validación del otro extremo. El candado no establece esa segunda configuración.

La nota de revisión debe distinguir tres afirmaciones: la directiva de caché elegida satisface un requisito, la copia observada procede de una capa de almacenamiento concreta y cada conexión tiene la protección prevista. La evidencia de una no establece las demás.

Términos que viste

HTTPproxycookiesesiónTLS

Compruébate

Sin reloj ni penalizaciones. Lee cada explicación y vuelve a intentarlo cuando quieras.

  1. El requisito prohíbe almacenar recibos en cachés HTTP. ¿Qué directiva de respuesta corresponde directamente?

    Ver la respuesta

    Respuesta correcta: no-store Indica a las cachés HTTP que no almacenen la respuesta. Otras copias y los datos ya almacenados por la aplicación requieren atención aparte.

  2. TLS termina en un proxy inverso. ¿Qué establece una validación correcta del certificado en el navegador?

    Ver la respuesta

    Respuesta correcta: Que el navegador autenticó a su extremo TLS según sus reglas de confianza. La afirmación se limita a esa conexión. Revisa por separado el siguiente tramo y los permisos de la aplicación.

  3. Una petición GET al catálogo también genera una entrada en el registro de acceso. ¿Cómo encaja con la semántica de método seguro?

    Ver la respuesta

    Respuesta correcta: El cliente pidió recuperar contenido; el registro incidental es compatible. Seguro describe la operación solicitada. No prohíbe la contabilidad ni los registros internos.

  4. Una cookie de sesión es HttpOnly. ¿Qué conclusión está justificada?

    Ver la respuesta

    Respuesta correcta: Las API de cookies no exponen esa cookie a scripts; otras acciones necesitan sus propios controles. El atributo limita el acceso a la cookie; renderizado, protección de peticiones y autorización siguen siendo independientes.

  5. La tienda añade no-store, pero el recibo de ayer sigue visible en la tableta. ¿Qué evidencia sería más útil?

    Ver la respuesta

    Respuesta correcta: Una traza que distinga una respuesta nueva, una caché HTTP y el estado gestionado por la aplicación. Identifica el componente que conserva la copia y su ciclo de vida antes de decidir qué control falló.

Pruébalo

  • EscribeElige para la tienda una política de caché de respuesta para catálogos y recibos y explica su alcance. Dibuja navegador, proxy inverso y aplicación con dos conexiones separadas. Indica un registro de verificación del almacenamiento de recibos y otro de la segunda conexión.
Referencias