03.-Análisis de la petición HTTP
La comunicación en el protocolo HTTP se basa en el intercambio de peticiones HTTP por parte del cliente y respuestas HTTP generadas por el servidor. Cada petición HTTP tiene una estructura definida que incluye los siguientes elementos:
Estructura de una petición HTTP¶
- Línea de petición: Es la primera línea de la petición y contiene:
- El método HTTP utilizado (GET, POST, etc.).
- El path de la URL que se desea consultar.
- La versión del protocolo HTTP.
- Cabeceras de la petición: Proporcionan información adicional al servidor, como:
- Cookies: Información enviada previamente por el servidor.
- User-Agent: Indica el navegador o dispositivo cliente.
- Host: Define el servidor remoto al que se dirige la petición.
- Cuerpo de la petición (opcional): Se incluye solo en ciertos métodos (como POST) y contiene parámetros o datos que deben procesarse en el servidor. Estos pueden estar en formatos como JSON, XML, binarios, etc.
Por ejemplo, al enviar los parámetros bookId
y author
en el cuerpo de una petición POST, el servidor puede utilizarlos para realizar búsquedas o insertar datos en una base de datos.
Métodos HTTP más comunes¶
- GET: Solicita datos de un servidor sin incluir un cuerpo en la petición. Los parámetros se envían directamente en la URL.
- POST: Envía datos al servidor en el cuerpo de la petición, como formularios, archivos o datos en JSON.
- HEAD: Similar a GET, pero devuelve solo las cabeceras de la respuesta, sin incluir el cuerpo.
- OPTIONS: Solicita al servidor información sobre los métodos HTTP que admite.
- PUT: Sube un archivo o inserta datos en el servidor.
- DELETE: Borra un recurso especificado en el servidor.
- TRACE: Devuelve todos los datos enviados en la petición, utilizado para depuración.
Cabeceras HTTP más comunes¶
- Accept: Tipos de contenido aceptados en la respuesta (texto, JSON, etc.).
- Authorization: Utilizada para autenticación (como tokens o credenciales básicas).
- Cache-Control: Indica si los datos de la respuesta pueden almacenarse en caché.
- Content-Length: Especifica el tamaño de la petición en bytes.
- Content-Type: Define el tipo de contenido del cuerpo (POST o PUT).
- User-Agent: Informa sobre el navegador y sistema operativo del cliente.
Más información sobre cabeceras: List of HTTP Header Fields.
Estructura de una dirección URL¶
Una URL tiene varias partes, cada una con un propósito específico:
- Protocolo: Define el esquema de comunicación (HTTP o HTTPS).
- Dominio: Identifica el servidor al que se accede.
- Path: Indica la ruta o funcionalidad específica dentro del dominio.
- Parámetros: Representan los datos de entrada en forma de pares clave/valor, separados por el símbolo
&
.
Por ejemplo, en la URL:
https://www.ejemplo.com/productos?categoria=libros&id=123
- Protocolo:
https
- Dominio:
www.ejemplo.com
- Path:
/productos
- Parámetros:
categoria=libros
yid=123
Este análisis permite comprender cómo se estructuran las peticiones y las respuestas en una auditoría HTTP, identificando posibles áreas de vulnerabilidad.