Conceptos básicos de las aplicaciones web
Aprende los conceptos básicos de las aplicaciones web: HTTP, URL, métodos de solicitud, códigos de respuesta y encabezados.
Tarea 1 Introducción
¡Bienvenidos a los conceptos básicos de las aplicaciones web! En esta sala, repasaremos los elementos clave de una aplicación web, como las URL,HTTPsolicitudes y respuestas. Esto es perfecto si estás empezando y quieres familiarizarte con lo esencial o si buscas crear o trabajar con aplicaciones web.
Objetivos de aprendizaje
Al completar esta habitación, usted logrará:
- Comprender qué es una aplicación web y cómo se ejecuta en un navegador web.
- Analiza los componentes de una URL y observa cómo facilita el acceso a los recursos web.
- Aprende cómoHTTPLas solicitudes y respuestas funcionan.
- Familiarícese con los diferentes tipos deHTTPmétodos de solicitud.
- Entienda qué son diferentesHTTPLos códigos de respuesta significan.
- Mira cómoHTTPCómo funcionan los encabezados y por qué son importantes para la seguridad.
Tarea 2 Descripción general de la aplicación web
Imaginemos una aplicación web como un planeta. Los astronautas viajan a un planeta para explorar su superficie, de forma similar a como alguien usa un navegador web para explorar una aplicación web. Aunque solo vemos la superficie de un planeta, hay mucho que sucede bajo ella. Podemos imaginar el planeta entero como un servidor web con muchas actividades ocurriendo bajo su superficie, pero lo único que solemos ver son las páginas web o aplicaciones. A continuación, exploraremos los distintos componentes que conforman una aplicación web.
Interfaz
La interfaz de usuario puede compararse con la superficie del planeta, con las partes que un astronauta puede ver e interactuar según las leyes de la naturaleza. Una aplicación web permite la interacción del usuario y utiliza diversas tecnologías como HTML, CSS y JavaScript para ello.

HTML (Lenguaje de Marcado de Hipertexto) es un aspecto fundamental de las aplicaciones web. Se trata de un conjunto de instrucciones o código que indica al navegador qué mostrar y cómo mostrarlo. Podría compararse con los organismos simples que habitan el planeta; estos organismos poseen ADN, que contiene las instrucciones para su estructura.

Las hojas de estilo en cascada ( CSS ) en las aplicaciones web describen una apariencia estándar, como ciertos colores, tipos de texto y diseños. Siguiendo con la analogía del ADN, estas características podrían compararse con las partes del ADN que describen el color, la forma, el tamaño y la textura de un organismo simple.

JavaScript (JS) forma parte del front-end de una aplicación web y permite una actividad más compleja en el navegador. Mientras que HTML se puede considerar un conjunto simple de instrucciones sobre qué mostrar, JavaScript es un conjunto de instrucciones más avanzado que permite tomar decisiones sobre qué mostrar. Siguiendo la analogía del planeta, JavaScript puede considerarse el cerebro de un organismo avanzado, que permite tomar decisiones en función de qué y cómo interactúa algo con él.
Back End
El backend de una aplicación web comprende los elementos que no se ven en un navegador, pero que son esenciales para su funcionamiento. En un planeta, estos elementos no son visibles: las estructuras que sostienen un edificio, el aire y la gravedad que mantiene los pies en el suelo.

Una base de datos es un lugar donde se puede almacenar, modificar y recuperar información. Una aplicación web podría necesitar almacenar y recuperar información sobre las preferencias de un visitante respecto a qué mostrar o no; esta información se almacenaría en una base de datos. Un planeta podría tener habitantes más avanzados que almacenen información sobre ubicaciones en mapas, escriban notas en un diario o guarden libros en una biblioteca y archivos en un archivador.

Existen muchos otros componentes de infraestructura que sustentan las aplicaciones web, como servidores web, servidores de aplicaciones, almacenamiento, diversos dispositivos de red y otro software que da soporte a la aplicación web. En un planeta, estos son los caminos que existen, los coches que circulan por esos caminos y el combustible que los impulsa.

WAF (Aplicación web)CortafuegosEs un componente opcional para aplicaciones web. Ayuda a filtrar las solicitudes peligrosas del servidor web y proporciona cierta protección. Esto podría compararse con la forma en que la atmósfera de un planeta protege a sus habitantes de los dañinos rayos UV.
Resumen
El desarrollo de una aplicación web implica numerosos componentes. Los componentes de front-end, como HTML, CSS y JavaScript, se centran en la experiencia del usuario en el navegador. Los componentes de back-end, como el servidor web, la base de datos o el WAF, constituyen el motor subyacente que permite el funcionamiento de la aplicación web. Esta introducción se desarrollará con mayor profundidad en las próximas tareas.
Responda las siguientes preguntas
¿Qué componente de un ordenador es el responsable de alojar y distribuir el contenido de las aplicaciones web?
web server
¿Qué herramienta se utiliza para acceder e interactuar con las aplicaciones web?
web browser
¿Qué componente actúa como capa protectora, filtrando el tráfico entrante para bloquear ataques maliciosos y garantizando la seguridad de la aplicación web?
web application firewall
Tarea 3 Localizador Uniforme de Recursos
Localizador Uniforme de Recursos
Un Localizador Uniforme de Recursos (URL) es una dirección web que permite acceder a todo tipo de contenido en línea, ya sea una página web, un vídeo, una foto u otro tipo de contenido multimedia. Guía al navegador al lugar correcto en Internet.
Anatomía de una URL

Imagina una URL como compuesta por varias partes, cada una con una función diferente para ayudarte a encontrar el recurso adecuado. Comprender cómo se combinan estas partes es fundamental para navegar por la web, desarrollar aplicaciones web e incluso solucionar problemas.
Aquí tienes un desglose de los componentes clave:
Esquema
El esquema es el protocolo utilizado para acceder al sitio web. Los más comunes son:HTTP(Protocolo de Transferencia de Hipertexto) y HTTPS (Protocolo de Transferencia de Hipertexto Seguro). HTTPS es más seguro porque cifra la conexión, razón por la cual los navegadores y los expertos en ciberseguridad lo recomiendan. Los sitios web suelen implementar HTTPS para mayor protección.
Usuario
Algunas URL pueden incluir los datos de inicio de sesión del usuario (normalmente el nombre de usuario) en sitios que requieren autenticación. Esto ocurre principalmente en URL que necesitan credenciales para acceder a ciertos recursos. Sin embargo, hoy en día es poco común, ya que incluir los datos de inicio de sesión en la URL no es muy seguro: puede exponer información confidencial, lo que supone un riesgo para la seguridad.
Host/Dominio
El host o dominio es la parte más importante de la URL porque te indica a qué sitio web estás accediendo. Cada nombre de dominio debe ser único y se registra a través de registradores de dominios. Desde el punto de vista de la seguridad, busca nombres de dominio que parezcan casi reales pero que tengan pequeñas diferencias (esto se llamatyposquatting). Estos dominios falsos se utilizan a menudo enphishingataques para engañar a la gente y conseguir que revelen información confidencial.
Puerto
El número de puerto ayuda a dirigir su navegador al servicio correcto en el servidor web. Es como decirle al servidor qué puerta usar para la comunicación. Los números de puerto van del 1 al 65.535, pero los más comunes son el 80 .HTTPy 443 para HTTPS.
Camino
La ruta apunta al archivo o página específicos del servidor a los que intentas acceder. Es como un mapa que le indica al navegador adónde ir. Los sitios web deben proteger estas rutas para garantizar que solo los usuarios autorizados puedan acceder a recursos confidenciales.
Cadena de consulta
La cadena de consulta es la parte de la URL que comienza con un signo de interrogación (?). Se suele usar para términos de búsqueda o campos de formulario. Dado que los usuarios pueden modificar estas cadenas de consulta, es importante gestionarlas de forma segura para prevenir ataques como las inyecciones , en las que se podría añadir código malicioso.
Fragmento
El fragmento comienza con el símbolo de almohadilla (#) y ayuda a apuntar a una sección específica de una página web, como por ejemplo, saltar directamente a un encabezado o tabla en particular. Los usuarios también pueden modificarlo, por lo que, al igual que con las cadenas de consulta, es importante revisar y limpiar cualquier dato presente para evitar problemas como ataques de inyección.
Responda las siguientes preguntas
¿Qué protocolo proporciona comunicación cifrada para garantizar la transmisión segura de datos entre un navegador web y un servidor web?
HTTPS
¿Qué término describe la práctica de registrar nombres de dominio que son variaciones mal escritas de sitios web populares para explotar errores de los usuarios y potencialmente participar en actividades fraudulentas?
Typosquatting
¿Qué parte de una URL se utiliza para transmitir información adicional, como términos de búsqueda o datos de formularios, al servidor web?
Query String
Tarea 4 Mensajes HTTP
HTTPLos mensajes son paquetes de datos que se intercambian entre un usuario (el cliente) y el servidor web. Estos mensajes son fundamentales para comprender el funcionamiento de las aplicaciones web, ya que muestran cómo se comunican las solicitudes de los usuarios y las respuestas del servidor.
Imagina un ejemplo de unHTTPSolicitud y unaHTTPRespuesta, donde se pueden ver elementos clave como el método, la URL, los encabezados y los códigos de estado. Estos elementos son los que hacen posible la interacción cliente-servidor.
Hay dos tipos deHTTPmensajes:
- HTTPSolicitudes : Enviadas por el usuario para activar acciones en la aplicación web.
- HTTPRespuestas : Enviadas por el servidor en respuesta a la solicitud del usuario.

Cada mensaje sigue un formato específico que facilita la comunicación fluida tanto entre el usuario como entre el servidor.
Línea de salida
La línea de inicio es como la introducción del mensaje. Indica qué tipo de mensaje se envía: si se trata de una solicitud del usuario o una respuesta del servidor. Esta línea también proporciona detalles importantes sobre cómo debe procesarse el mensaje.
Encabezados
Los encabezados están compuestos por pares clave-valor que proporcionan información adicional sobre el producto.HTTPMensaje. Proporcionan instrucciones tanto al cliente como al servidor que gestiona la solicitud o la respuesta. Estos encabezados abarcan diversos aspectos, como la seguridad, los tipos de contenido y más, garantizando que la comunicación se desarrolle sin problemas.
Línea vacía
La línea en blanco es un pequeño separador que divide el encabezado del cuerpo del mensaje. Es esencial porque indica dónde terminan los encabezados y dónde comienza el contenido del mensaje. Sin esta línea en blanco, el mensaje podría distorsionarse y el cliente o el servidor podrían interpretarlo erróneamente, provocando errores.
Cuerpo
El cuerpo es donde se almacenan los datos reales. En una solicitud, el cuerpo puede incluir datos que el usuario desea enviar al servidor (como datos de formulario). En una respuesta, es donde el servidor coloca el contenido que el usuario solicitó (como una página web oAPIdatos).
Por qué es importante entender los mensajes HTTP
- Estos mensajes son la base de cómo se comunican las aplicaciones web. Si están bien estructurados, todo funciona a la perfección.
- Saber cómo funcionan te ayudará a diagnosticar problemas en la comunicación web, lo que se traduce en un mejor rendimiento y mayor fiabilidad para tu aplicación web.
- También es crucial para la seguridad. ComprenderHTTPLa mensajería te ayuda a implementar sólidas medidas de seguridad para proteger los datos durante la transmisión.
Responda las siguientes preguntas
¿Qué mensaje HTTP devuelve el servidor web después de procesar la solicitud de un cliente?
HTTP response
¿Qué sigue a las cabeceras en un mensaje HTTP?
Empty Line
Tarea 5 Solicitud HTTP: Línea de solicitud y métodos
UnHTTPUna solicitud es lo que un usuario envía a un servidor web para interactuar con una aplicación web y lograr que algo suceda. Dado que estas solicitudes suelen ser el primer punto de contacto entre el usuario y el servidor web, comprender su funcionamiento es fundamental, especialmente si te interesa la ciberseguridad.

Imagina unHTTPsolicitud que muestra las partes clave como el método (por ejemplo, GET o POST), ruta (por ejemplo, /login) y versión (por ejemplo,HTTP/1.1). Estos elementos conforman los fundamentos de cómo un cliente (usuario) se comunica con un servidor.
Línea de solicitud
La línea de solicitud (o línea de inicio) es la primera parte de unHTTPLa solicitud le indica al servidor qué tipo de solicitud está procesando. Tiene tres partes principales:HTTPmétodo , la ruta URL y elHTTPversión .
Ejemplo: METHOD /path HTTP/version
HTTP Métodos
Los métodos HTTP le indica al servidor qué acción desea realizar el usuario sobre el recurso identificado por la ruta URL. A continuación, se presentan algunos de los métodos más comunes y sus posibles problemas de seguridad:
GET
Se utiliza para obtener datos del servidor sin realizar ningún cambio. ¡Recordatorio! Asegúrate de exponer únicamente los datos que el usuario tiene permiso para ver. Evita incluir información confidencial, como tokens o contraseñas, en las solicitudes GET, ya que pueden aparecer como texto sin cifrar.
POST
envía datos al servidor, generalmente para crear o actualizar información. ¡Recuerda! Siempre valida y limpia los datos de entrada para evitar ataques como la inyección SQL o XSS.
PUT
reemplaza o actualiza algo en el servidor. ¡Recordatorio! Asegúrate de que el usuario esté autorizado para realizar cambios antes de aceptar la solicitud.
DELETE
Elimina algo del servidor. ¡Recordatorio! Al igual que con PUT, asegúrese de que solo los usuarios autorizados puedan eliminar recursos.
Además de estos métodos comunes, existen algunos otros que se utilizan en casos específicos:
PATCH
actualiza parte de un recurso. Es útil para realizar pequeños cambios sin reemplazarlo por completo, pero siempre valide los datos para evitar inconsistencias.
HEAD
funciona como GET, pero solo recupera los encabezados, no el contenido completo. Es útil para consultar los metadatos sin descargar la respuesta completa.
OPCIONES
Indica qué métodos están disponibles para un recurso específico, lo que ayuda a los clientes a comprender qué pueden hacer con el servidor.
TRACE
Similar a OPTIONS, muestra qué métodos están permitidos, a menudo para depuración. Muchos servidores lo deshabilitan por razones de seguridad.
CONECTAR
Se utiliza para crear una conexión segura, como en HTTPS. No es tan común, pero es fundamental para la comunicación cifrada.
Cada uno de estos métodos tiene su propio conjunto de reglas de seguridad. Por ejemplo, las solicitudes PATCH deben validarse para evitar inconsistencias, y las opciones OPTIONS y TRACE deben desactivarse si no son necesarias para evitar posibles riesgos de seguridad.
Ruta URL
La ruta URL le indica al servidor dónde encontrar el recurso que el usuario está solicitando. Por ejemplo, en la URL https://tryhackme.com/api/users/123, la ruta /api/users/123identifica a un usuario específico.
Los atacantes suelen intentar manipular la ruta URL para explotar vulnerabilidades, por lo que es crucial:
- Valide la ruta URL para evitar el acceso no autorizado.
- Desinfectar el camino para evitar ataques con inyecciones
- Proteja los datos confidenciales mediante la realización de evaluaciones de privacidad y riesgos.
Seguir estas prácticas ayuda a proteger su aplicación web de los ataques más comunes.
HTTP Versión
ElHTTPLa versión muestra la versión del protocolo utilizada para la comunicación entre el cliente y el servidor. A continuación, un breve resumen de las más comunes:
HTTP/0.9 (1991)
La primera versión, solo admitía solicitudes GET.
HTTP/1.0 (1996)
Se añadieron encabezados y mejor soporte para diferentes tipos de contenido, mejorando el almacenamiento en caché.
HTTP/1.1 (1997)
Introdujo conexiones persistentes, codificación de transferencia por fragmentos y mejor almacenamiento en caché. Todavía se usa ampliamente hoy en día.
HTTP/2 (2015)
Introdujo características como multiplexación, compresión de encabezados y priorización para un rendimiento más rápido.
HTTP/3 (2022)
Construido enHTTP/2, pero utiliza un nuevo protocolo (QUIC) para conexiones más rápidas y seguras.
A pesar deHTTP/2 yHTTP/3 ofrecen mejor velocidad y seguridad, muchos sistemas todavía utilizan HTTP/1.1 porque cuenta con un buen soporte y funciona con la mayoría de las configuraciones existentes. Sin embargo, actualizar aHTTP/2 o HTTP/3 La opción puede proporcionar mejoras significativas en el rendimiento y la seguridad a medida que más sistemas la adopten.
Responda las siguientes preguntas
¿Qué versión del protocolo HTTP se popularizó y sigue siendo la más utilizada para la comunicación web, conocida por introducir características como las conexiones persistentes y la codificación de transferencia por fragmentos?
HTTP/1.1
¿Qué método de solicitud HTTP describe las opciones de comunicación para el recurso de destino, permitiendo a los clientes determinar qué métodos HTTP admite el servidor web?
OPTIONS
En una solicitud HTTP, ¿qué componente especifica el recurso o punto final específico en el servidor web que el cliente está solicitando, apareciendo normalmente después del nombre de dominio en la URL?
URL Path
Tarea 6 Solicitud HTTP: Encabezados y Cuerpo
Encabezados de solicitud
Los encabezados de solicitud permiten transmitir información adicional al servidor web sobre la solicitud. Algunos encabezados comunes son los siguientes:
Encabezados de solicitud comunes
| Encabezado de la solicitud | Ejemplo | Descripción |
| Anfitrión | Host: tryhackme.com | Especifica el nombre del servidor web al que se dirige la solicitud. |
| Agente de usuario | User-Agent: Mozilla/5.0 | Comparte información sobre el navegador web desde el que se realiza la solicitud. |
| Referente | Referer: https://www.google.com/ | Indica la URL desde la que se realizó la solicitud. |
| Galleta | Cookie: user_type=student; room=introtowebapplication; room_status=in_progress | La información que el servidor web solicitó previamente al navegador web que almacenara se guarda en las cookies. |
| Tipo de contenido | Content-Type: application/json | Describe qué tipo o formato de datos contiene la solicitud. |
Cuerpo de la solicitud
En las solicitudes HTTP como POST y PUT, donde los datos se envían al servidor web en lugar de solicitarse desde el servidor web, los datos se encuentran dentro del cuerpo de la solicitud HTTP. El formato de los datos puede adoptar muchas formas, pero algunas comunes son URL Encoded, Form Data, JSON, o XML.
- Codificación URL (application/x-www-form-urlencoded)
Un formato donde los datos se estructuran en pares de clave y valor donde ( key=value). Varios pares se separan mediante un &símbolo ( ), como key1=value1&key2=value2. Los caracteres especiales se codifican con porcentaje.
Ejemplo
POST/profileHTTP/1.1Host:tryhackme.comUser-Agent:Mozilla/5.0Content-Type:application/x-www-form-urlencodedContent-Length:33name=Aleksandra&age=27&country=US - Datos de formulario (multipart/form-data)
Permite enviar varios bloques de datos separados por una cadena delimitadora. Esta cadena delimitadora es el encabezado definido en la solicitud. Este formato se puede utilizar para enviar datos binarios, como al subir archivos o imágenes a un servidor web.
Ejemplo
POST/uploadHTTP/1.1Host:tryhackme.comUser-Agent:Mozilla/5.0Content-Type:multipart/form-data; boundary=—-WebKitFormBoundary7MA4YWxkTrZu0gW—-WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition:form-data; name=»username»aleksandra
—-WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition:form-data; name=»profile_pic»; filename=»aleksandra.jpg»Content-Type:image/jpeg[Binary Data Here representing the image]
—-WebKitFormBoundary7MA4YWxkTrZu0gW– - JSON (application/json)
En este formato, los datos se pueden enviar utilizando la estructura JSON (JavaScript Object Notation). Los datos se formatean en pares nombre:valor. Varios pares se separan por comas, todos contenidos entre llaves { }.
Ejemplo
POST/api/userHTTP/1.1Host:tryhackme.comUser-Agent:Mozilla/5.0Content-Type:application/jsonContent-Length:62
{«name»:»Aleksandra»,»age»:27,»country»:»US»} - XML (application/xml)
En el formato XML, los datos se estructuran dentro de etiquetas llamadas tags, que tienen una etiqueta de apertura y una de cierre. Estas etiquetas pueden anidarse unas dentro de otras. En el siguiente ejemplo, puede ver la apertura y el cierre de las etiquetas para enviar detalles sobre una usuaria llamada Aleksandra.
Ejemplo
POST/api/userHTTP/1.1Host:tryhackme.comUser-Agent:Mozilla/5.0Content-Type:application/xmlContent-Length:124
<user><name>Aleksandra</name><age>27</age><country>US</country></user>
Responda las siguientes preguntas
¿Qué encabezado de solicitud HTTP especifica el nombre de dominio del servidor web al que se envía la solicitud?
Host
¿Cuál es el tipo de contenido predeterminado para los envíos de formularios en una solicitud HTTP donde los datos están codificados como pares clave=valor en un formato de cadena de consulta?
application/x-www-form-urlencoded
¿Qué parte de una solicitud HTTP contiene información adicional, como el host, el agente de usuario y el tipo de contenido, que guía al servidor web sobre cómo debe procesar la solicitud?
Request Headers
Tarea 7 Respuesta HTTP: Línea de estado y códigos de estado

Cuando interactúas con una aplicación web, el servidor devuelve unaHTTPLa respuesta le informará si su solicitud fue exitosa o si hubo algún problema. Estas respuestas incluyen un código de estado y una breve explicación (denominada Frase de Motivo ) que le permitirá comprender cómo el servidor procesó su solicitud.
Línea de estado
La primera línea en cadaHTTPLa respuesta se llama Línea de estado . Te proporciona tres datos clave:
- HTTPVersión : Esto le indica qué versión deHTTPse está utilizando.
- Código de estado : Un número de tres dígitos que muestra el resultado de su solicitud.
- Mensaje explicativo : Un breve mensaje que explica el código de estado en términos comprensibles para el usuario.
Como ya lo hemos cubiertoHTTPEn las versiones de la Tarea 5, centrémonos en los Códigos de estado y las Frases de motivo .
Códigos de estado y frases de motivo
El código de estado es el número que indica si la solicitud se realizó correctamente o no, mientras que la frase de motivo explica lo sucedido. Estos códigos se dividen en cinco categorías principales:
Respuestas informativas (100-199)
Estos códigos significan que el servidor ha recibido parte de la solicitud y está esperando la respuesta.descansarEs una señal de «sigue adelante».
Respuestas exitosas (200-299):
Estos códigos indican que todo funcionó como se esperaba. El servidor procesó la solicitud y devolvió los datos solicitados.
Mensajes de redirección (300-399):
Estos códigos le indican que el recurso que solicitó se ha movido a una ubicación diferente, y generalmente proporcionan la nueva URL.
Respuestas de error del cliente (400-499):
Estos códigos indican un problema con la solicitud. Es posible que la URL sea incorrecta o que falte información necesaria, como la autenticación.
Respuestas de error del servidor (500-599)
: Estos códigos indican que el servidor encontró un error al intentar procesar la solicitud. Generalmente, se trata de problemas del servidor y no son responsabilidad del cliente.
Códigos de estado comunes
Estos son algunos de los códigos de estado que se ven con más frecuencia:
100 (Continuar)
El servidor recibió la primera parte de la solicitud y está listo para ladescansar.
200 (OK)
La solicitud fue exitosa y el servidor está enviando el recurso solicitado.
301 (Movido permanentemente)
El recurso que solicita se ha movido permanentemente a una nueva URL. Utilice la nueva URL a partir de ahora.
404 (No encontrado)
El servidor no pudo encontrar el recurso en la URL proporcionada. Verifique que la dirección sea correcta.
500 (Error interno del servidor)
Algo salió mal en el servidor y no pudo procesar su solicitud.
Responda las siguientes preguntas
¿Qué parte de una respuesta HTTP proporciona la versión HTTP, el código de estado y una breve explicación del resultado de la respuesta?
Status Line
¿Qué categoría de códigos de respuesta HTTP indica que el servidor web encontró un problema interno o no puede satisfacer la solicitud del cliente?
Server Error Responses
¿Qué código de estado HTTP indica que el recurso solicitado no se pudo encontrar en el servidor web?
404
Tarea 8 Respuesta HTTP: Encabezados y cuerpo
Encabezados de respuesta
Cuando un servidor web responde a unaHTTPsolicitud, incluyeHTTPLos encabezados de respuesta son básicamente pares clave-valor. Estos encabezados proporcionan información importante sobre la respuesta e indican al cliente (normalmente el navegador) cómo procesarla.
Imagínese un ejemplo deHTTPrespuesta con los encabezados resaltados. Los encabezados clave como Content-Type, Content-Length, y Datenos brindan detalles importantes sobre la respuesta que envía el servidor.
Encabezados de respuesta obligatorios
Algunos encabezados de respuesta son cruciales para garantizar que la respuesta HTTP funcione correctamente. Proporcionan información esencial que tanto el cliente como el servidor necesitan para procesar todo correctamente. Aquí hay algunos importantes:
- Fecha :
Ejemplo: Date: Fri, 23 Aug 2024 10:43:21 GMT
Este encabezado muestra la fecha y hora exactas en que el servidor generó la respuesta. - Content-Type :
Ejemplo: Content-Type: text/html; charset=utf-8
Indica al cliente qué tipo de contenido está recibiendo, como HTML, JSON u otro formato. También incluye el conjunto de caracteres (como UTF-8) para ayudar al navegador a mostrarlo correctamente. - Servidor :
Ejemplo: Server: nginx
Este encabezado muestra qué tipo de software de servidor está procesando la solicitud. Es útil para la depuración, pero también puede revelar información del servidor que podría ser útil para los atacantes, por lo que muchas personas lo eliminan u ocultan.
Otros encabezados de respuesta comunes
Además de las esenciales, existen otras cabeceras comunes que proporcionan instrucciones adicionales al cliente o al navegador y ayudan a controlar cómo se debe gestionar la respuesta.
- Set-Cookie :
Ejemplo: Set-Cookie: sessionId=38af1337es7a8
Esta función envía cookies del servidor al cliente, que luego las almacena y las devuelve con futuras solicitudes. Para mayor seguridad, asegúrese de que las cookies se establezcan con el HttpOnlyindicador (para que no puedan ser accedidas por JavaScript) y el Secureindicador (para que solo se envíen a través de HTTPS). - Cache-Control :
Ejemplo: Cache-Control: max-age=600
Este encabezado le indica al cliente cuánto tiempo puede almacenar en caché la respuesta antes de volver a consultar con el servidor. También puede evitar que se almacene en caché información confidencial si es necesario (usando no-cache). - Ubicación :
Ejemplo: Location: /index.html
Este encabezado se usa en las respuestas de redirección (3xx). Indica al cliente a dónde dirigirse si el recurso se ha movido. Si los usuarios pueden modificar este encabezado durante las solicitudes, asegúrese de validarlo y sanitizarlo; de lo contrario, podría generar vulnerabilidades de redirección abiertas, donde los atacantes podrían redirigir a los usuarios a sitios web dañinos.
Cuerpo de respuesta
El cuerpo de la respuesta HTTP es donde residen los datos reales, cosas como HTML,JSON, imágenes, etc., que el servidor envía de vuelta al cliente. Para prevenir ataques de inyección como Cross-Site Scripting (XSS), siempre sanee y escape cualquier dato (especialmente el contenido generado por el usuario) antes de incluirlo en la respuesta.
Responda las siguientes preguntas
¿Qué encabezado de respuesta HTTP puede revelar información sobre el software y la versión del servidor web, exponiéndolo potencialmente a riesgos de seguridad si no se elimina?
Server
¿Qué indicador se debe agregar a las cookies en el encabezado de respuesta HTTP Set-Cookie para garantizar que solo se transmitan a través de HTTPS, protegiéndolas así de quedar expuestas durante transmisiones no cifradas?
Secure
¿Qué indicador se debe agregar a las cookies en el encabezado de respuesta HTTP Set-Cookie para evitar que se acceda a ellas mediante JavaScript, mejorando así la seguridad contra ataques XSS?
HttpOnly
Tarea 9 Encabezados de seguridad
Encabezados de seguridad
HTTPLos encabezados de seguridad ayudan a mejorar la seguridad general de la aplicación web al proporcionar mitigaciones contra ataques como Cross-Site Scripting (XSS), clickjacking y otros. Ahora profundizaremos en los siguientes encabezados de seguridad:
- Política de seguridad de contenido (CSP)
- Sistema de seguridad de transporte estricto (HSTS)
- X-Content-Type-Options
- Política de referencias
Puedes usar un sitio como https://securityheaders.io/(Se abre en una pestaña nueva)Analizar los encabezados de seguridad de cualquier sitio web. Tras la explicación de esta tarea, esperamos que comprenda mejor qué información se está recopilando.
Política de seguridad de contenido (CSP)
ACSPEl encabezado es una capa de seguridad adicional que puede ayudar a mitigar ataques comunes como el Cross-Site Scripting (XSS). El código malicioso podría alojarse en un sitio web o dominio separado e inyectarse en el sitio web vulnerable.CSPProporciona a los administradores una forma de indicar qué dominios o fuentes se consideran seguros y ofrece una capa de mitigación contra este tipo de ataques.
Dentro del encabezado, podrá ver propiedades como default-srcdefinidas script-srcy muchas más. Cada una de ellas permite al administrador definir, con distintos niveles de detalle, qué dominios están permitidos para cada tipo de contenido. El uso de `self` es una palabra clave especial que indica el mismo dominio donde se aloja el sitio web.
Veamos un ejemplo de encabezado CSP:
Content-Security-Policy: default-src ‘self’; script-src ‘self’ https://cdn.tryhackme.com; style-src ‘self’
Observamos el uso de:
- default-src
: especifica la política predeterminada de self, lo que significa solo el sitio web actual. - script-src
: especifica la política de dónde se pueden cargar los scripts, que es el propio script junto con los scripts alojados enhttps://cdn.tryhackme.com - style-src
: especifica la política sobre dónde se pueden cargar las hojas de estilo CSS del sitio web actual (self).
Sistema de seguridad de transporte estricto (HSTS)
El encabezado HSTS garantiza que los navegadores web siempre se conecten a través de HTTPS. Veamos un ejemplo de HSTS:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
Aquí se muestra un desglose del encabezado HSTS de ejemplo por directiva:
- max-age
: este es el tiempo de caducidad en segundos para esta configuración. - includeSubDomains
: una configuración opcional que indica al navegador que aplique también esta configuración a todos los subdominios. - precarga
: esta configuración opcional permite incluir el sitio web en listas de precarga. Los navegadores pueden usar estas listas para aplicar HSTS incluso antes de su primera visita al sitio web.
X-Content-Type-Options
El encabezado X-Content-Type-Options se puede usar para indicar a los navegadores que no adivinen el tipo MIME de un recurso, sino que solo utilicen el encabezado Content-Type. Aquí hay un ejemplo:
X-Content-Type-Options: nosniff
Aquí se muestra un desglose del encabezado X-Content-Type-Options por directivas:
- nosniff
: esta directiva le indica al navegador que no espíe ni adivine laMÍMICAtipo.
Política de referencias
Este encabezado controla la cantidad de información que se envía al servidor web de destino cuando un usuario es redirigido desde el servidor web de origen, por ejemplo, al hacer clic en un hipervínculo. El encabezado permite al administrador web controlar qué información se comparte. A continuación, se muestran algunos ejemplos de Referrer-Policy:
- Referrer-Policy: no-referrer
- Referrer-Policy: same-origin
- Referrer-Policy: strict-origin
- Referrer-Policy: strict-origin-when-cross-origin
Aquí tienes un desglose del encabezado Referrer-Policy por directivas:
- no-referrer
: desactiva por completo el envío de cualquier información sobre el referente. - mismo origen
: esta política solo enviará información de referencia cuando el destino forme parte del mismo origen. Esto resulta útil cuando se desea que la información de referencia se transmita cuando los hipervínculos se encuentran dentro del mismo sitio web, pero no hacia sitios web externos. - strict-origin
: esta política solo envía el referrer como origen cuando el protocolo permanece igual. Por lo tanto, se envía un referrer cuando una conexión HTTPS se dirige a otra conexión HTTPS. - strict-origin-when-cross-origin
: esto es similar a strict-origin excepto para las solicitudes del mismo origen, donde envía la ruta URL completa en el encabezado de origen.
Responda las siguientes preguntas
En una configuración de Política de Seguridad de Contenido (CSP), ¿qué propiedad se puede establecer para definir desde dónde se pueden cargar los scripts?
script-src
Al configurar el encabezado Strict-Transport-Security (HSTS) para garantizar que todos los subdominios de un sitio también utilicen HTTPS, ¿qué directiva se debe incluir para aplicar la política de seguridad tanto al dominio principal como a sus subdominios?
includeSubDomains
¿Qué directiva de encabezado HTTP se utiliza para evitar que los navegadores interpreten los archivos como un tipo MIME diferente al especificado por el servidor, mitigando así los ataques de detección de tipo de contenido?
nosniff
Tarea 10 Tarea práctica: Realizar solicitudes HTTP
Haz clic en el botón «Ver sitio» de la derecha para abrir el sitio estático en vista dividida.
Este es un emulador para crear demos.HTTPsolicitudes. Utilizando lo que has aprendido en las tareas anteriores, responde las preguntas a continuación.
En caso de que el sitio estático no esté visible, haga clic en el botón azul » Mostrar vista dividida» en la parte superior de la página.
Responda las siguientes preguntas
Realiza una solicitud GET/api/users a . ¿Cuál es la bandera?
THM{YOU_HAVE_JUST_FOUND_THE_USER_LIST}
Realiza una solicitud POST/api/user/2 y actualiza el país de Bob de Reino Unido a EE . UU. ¿Cuál es la bandera?
THM{YOU_HAVE_MODIFIED_THE_USER_DATA}
Realiza una solicitud DELETE/api/user/1 para eliminar al usuario. ¿Cuál es la bandera?
THM{YOU_HAVE_JUST_DELETED_A_USER}
Tarea 11 Conclusión
¡Eso es todo! ¡Has completado todas las tareas! Esperamos que hayas disfrutado aprendiendo sobre los elementos que componen las aplicaciones web. Esperamos que hayas aprendido un poco más sobre:
- ¿Qué componentes intervienen en las aplicaciones web?
- La estructura del Localizador Uniforme de Recursos (URL)
- Cuáles sonHTTPmensajes, solicitudes, encabezados y respuestas
- La importancia de los encabezados de seguridad
Disfruta de tu próxima aventura de aprendizaje.
Sigan entrenando, Hacketones, Nos vemos en el próximo laboratorio!!!