Filtros
Nivel
Artículos (116)
fundamentos

HTTP: El Protocolo de la Web

Aprende los fundamentos del protocolo HTTP, la base de toda comunicación en la World Wide Web.

Estudiante
10 minutos
Enero 2026
🌐

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

Entender HTTP es el paso más importante en seguridad web. Toda vulnerabilidad — XSS, SQLi, CSRF, SSRF — se explota a través de peticiones HTTP manipuladas.

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).

Terminal
CLIENTE (navegador) SERVIDOR (web server) │ │ │ ──── HTTP REQUEST ─────────────► │ │ GET /login HTTP/1.1 │ │ Host: ejemplo.com │ │ Cookie: session=abc123 │ │ │ │ ◄──── HTTP RESPONSE ──────────── │ │ HTTP/1.1 200 OK │ │ Content-Type: text/html │ │ <html>...</html> │

Estructura de una Petición HTTP

Línea de Solicitud

Contiene el método, la ruta y la versión del protocolo.

Petición HTTP completa
http

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).
Si un endpoint sensible acepta tanto GET como POST sin distinción, puede ser explotable mediante CSRF o via logs del servidor que capturan params de GET.

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.

Terminal
1xx Informativos 2xx Éxito 200 OK → Éxito 201 Created → Recurso creado 204 No Content → Éxito sin cuerpo 3xx Redirecciones 301 Moved Permanently 302 Found (temporal) 304 Not Modified → Cache hit 4xx Errores del cliente 400 Bad Request → Payload inválido 401 Unauthorized → Sin autenticar 403 Forbidden → Sin autorización 404 Not Found → Recurso inexistente 429 Too Many Reqs → Rate limiting 5xx Errores del servidor 500 Internal Server Error → Bug/excepción 502 Bad Gateway → Proxy error 503 Service Unavailable → Sobrecarga
En bug bounty: si una petición con un ID inválido devuelve 403 (Forbidden) en vez de 404 (Not Found), el recurso EXISTE pero no tienes acceso. Eso es información valiosa para el atacante (user enumeration).

Headers de Seguridad

Los headers HTTP de respuesta son la primera línea de defensa. Verifica siempre su presencia:

Headers de seguridad ideales en una respuesta
http

Cookies y Headers de Autenticación

Cookies

Cookie segura vs insegura
http

Sin HttpOnly

Si una cookie de sesión no tiene el atributo HttpOnly, JavaScript puede leerla con document.cookie. Un ataque XSS puede robarla directamente.

Authorization Header

Tipos de autenticación HTTP
http

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.
HTTP/2 y HTTP/3 requieren TLS obligatoriamente en la práctica. Si tu servidor soporta downgrade a HTTP/1.1 sin TLS, es una misconfiguration crítica.

Herramientas para inspeccionar HTTP

Terminal
# Ver cabeceras de respuesta curl -I https://ejemplo.com # Petición completa con cabeceras de request y response curl -v https://ejemplo.com/api/login # Interceptar y modificar en tiempo real → Burp Suite Community (proxy) → mitmproxy (CLI) → DevTools de Chrome (Network tab) # Analizar headers de seguridad de un sitio → https://securityheaders.com → https://observatory.mozilla.org
Por Aitana Security Team