Content Available in Spanish Only
This article is currently available only in Spanish. We're working on translations.
Available in: ES • Tip: Use your browser's translation feature or visit the Spanish version
¿Qué es HTTP?
HTTP (HyperText Transfer Protocol) es el protocolo de comunicación que permite la transferencia de datos en la web. Es la base de toda aplicación web: cuando abres un navegador y visitas una URL, tu navegador envía una petición HTTP al servidor, y el servidor responde con HTTP.
HTTP en seguridad
Modelo Cliente-Servidor
HTTP funciona con un modelo simple de petición-respuesta entre un cliente(normalmente un navegador) y un servidor (que aloja la aplicación web).
Estructura de una Petición HTTP
Línea de Solicitud
Contiene el método, la ruta y la versión del protocolo.
Métodos HTTP
Cada método tiene una semántica específica. Usarlos incorrectamente crea vulnerabilidades:
- GET — Obtener un recurso. Solo lectura, sin cuerpo. No debe modificar estado.
- POST — Crear un recurso o enviar datos. El cuerpo contiene los datos.
- PUT — Reemplazar completamente un recurso existente.
- PATCH — Modificar parcialmente un recurso.
- DELETE — Eliminar un recurso.
- OPTIONS — Consultar los métodos permitidos (relacionado con CORS).
- HEAD — Como GET pero sin cuerpo en la respuesta (solo headers).
Estructura de una Respuesta HTTP
Códigos de Estado
Los códigos de estado son críticos para la seguridad: revelan información sobre la lógica de la aplicación que un atacante puede aprovechar.
Headers de Seguridad
Los headers HTTP de respuesta son la primera línea de defensa. Verifica siempre su presencia:
HTTP/1.1 vs HTTP/2 vs HTTP/3
Las distintas versiones de HTTP tienen implicaciones de seguridad:
- HTTP/1.1: Texto plano, una petición por conexión (con pipelining). Ampliamente explotable si no hay TLS.
- HTTP/2: Binario, multiplexación (varias peticiones en una conexión). Introduce riesgos de HTTP/2 CONTINUATION attacks (2024).
- HTTP/3: Basado en QUIC (UDP), más rápido. Menor superficie de ataque por diseño.