XUT_ / COURSES / CYBER SECURITY 101

HTTP Request - Request Line and Methods

Una petición HTTP es lo que un usuario manda a un servidor para interactuar con una aplicación web y hacer que algo pase. Ya que estas peticiones son normalmente el primer punto de contacto entre el usuario y el servidor es muy importante saber bien cómo funcionan.

HTTP Request - Request Line and Methods

Imagina una petición HTTP mostrando las partes clave como el método, ruta y versión. Estos elementos hacen lo básico de cómo se comunican el servidor y el cliente.


Request Line

La línea de petición (o start line) es la primera parte de una petición HTTP y le dice al servidor qué tipo de petición es. Tiene tres partes principales: el método HTTP, la ruta URL y la versión HTTP.

Ejemplo: METHOD /path HTTP/version

Métodos

Los métodos HTTP le dicen al servidor qué acción el usuario quiere llevar a cabo en el recurso identificado por la ruta URL. Aquí unos de los métodos más comunes y utilizados.


GET

Usado para extraer información del servidor sin hacer cambios. Recuerda exponer sólo información que el usuario pueda ver. Evita poner información sensible como tokens o contraseñas.

POST

Manda información al servidor, usualmente para crear o actualizar algo. Valida y limpia SIEMPRE el contenido para evitar ataques como SQLI y XSS.

PUT

Reemplaza o actualiza algo en el servidor, recuerda validar que el usuario esté autorizado para hacer estos cambios antes de hacerlos.

DELETE

Borra algo del servidor, recuerda, como con PUT, validar que el usuario tenga los permisos correspondientes para llevar a cabo esta acción.

A parte de los métodos más comunes, aquí otros:

PATCH

Actualiza un recurso. Es útil para hacer pequeños cambios sin reemplazar la web entera, pero valida la información aportada para evitar inconsistencias.

HEAD

Funciona como un GET pero sólo devuelve los headers, útil para comprobar metadata sin descargar el contenido completo.

OPTIONS

Te dice qué métodos están disponibles para un recurso específico.

TRACE

Similar a OPTIONS, te dice qué métodos están disponibles, con propósito de debugging. Muchos servidores lo desactivan por motivos de seguridad.

CONNECT

Usado para crear una conexión segura, como para HTTPS. No es tan común pero es crítica para la comunicación encriptada.


Ruta URL

La ruta URL le dice al servidor dónde encontrar el recurso al cual el usuario está intentando acceder. Por ejemplo, en la URL https://tryhackme.com/api/users/12, la ruta /api/users/123 identifica a un usuario específico.

Los atacantes comúnmente intentan manipular la ruta URL para explotar vulnerabilidades, así que es crucial:

  • Validar la ruta URL para prevenir acceso no autorizado.
  • Sanitizar la ruta para evitar ataques de inyección.
  • Proteger la información sensible.

Versión HTTP

La versión HTTP muestra la versión del protocolo usada para comunicarse entre el cliente y el servidor. Aquí una vista rápida de los usos más comunes.

HTTP/0.9 (1991)

La primera versión, solo soportaba GET.

HTTP/1.0 (1996)

Incrementó headers y mejor soporte para diferente tipo de contenido.

HTTP/1.1 (1997)

Trajo conexiones persistentes, encoding y mejor cacheo. Ampliamente usado hasta nuestra fecha.

HTTP/2 (2015)

Introdujo funcionalidades como multiplexing, compresión de headers y priorización para actuación más rápida.

HTTP/3 (2022)

Construido en HTTP/2, pero usa un nuevo protocolo (QUIC) para conexiones más rápidas y seguras.

Aunque HTTP/2 y HTTP/3 ofrecen mejor rapidez y seguridad, muchos sistemas todavía usan HTTP/1.1 porque tiene buen soporte y funciona con casi todos los setups existentes. Sin embargo evolucionar hacia HTTP/2 o HTTP/3 puede tener mejoras significativas en términos de eficiencia y seguridad.