JUNTANDO TODO
En los módulos anteriores has aprendido que ocurren muchas cosas tras bambalinas cuando hacemos una petición de un sitio web a nuestro navegador. Es hora de ir uniéndolo todo.
Para resumir, cuando haces la petición de un sitio web, tu ordenador necesita conocer la dirección IP del servidor con el que ha de hablar; para esto, utiliza las DNS. Entonces tu ordenador habla con el servidor usando un conjunto especial de comandos llamado protocolo HTTP; el servidor web devuelve HTML, JavaScript, CSS, imágenes, etc., que tu navegador utiliza para formatearlos correctamente y mostrarte el sitio web.

También hay otros componentes que ayudan a la web a ejecutarse más eficientemente y proporcionan características extra.
Contesta las preguntas
- He leído esto…
OTROS COMPONENTES
Balanceadores de carga
Cuando el tráfico de un sitio web comienza a crecer o está corriendo una aplicación que necesita una alta disponibilidad, es posible que un solo servidor web no pueda mantener el trabajo. Los balanceadores de carga proporcionan dos características principales, asegurando que los sitios web con alto tráfico puedan mantener la carga y proporcionando una conmutación por errores si el servidor se queda sin respuesta. Si pides un sitio web con un balanceador de carga, este balanceador recibirá tu petición y la dejará pasar a uno de los múltiples servidores tras él.
El balanceador de carga utiliza distintos algoritmos para ayudar a decidir qué servidor es mejor para tratar con esa petición. Un par de ejemplos de estos algoritmos son round-robin, el cual la envía a cada servidor por turnos, o weighted, el cual comprueba con cuántas peticiones está tratando un servidor en ese momento y la envía al servidor menos ocupado.
Los balanceadores de carga también realizan comprobaciones periódicas con cada servidor para asegurarse de que están corriendo correctamente; es lo que se llama una comprobación de salud (health check). Si un servidor no responde de forma apropiada o no responde, el balanceador de carga frenará el tráfico enviado hasta que responda correctamente de nuevo.

CDN (Content Delivery Networks)
Un CDN puede ser un excelente recurso para cortar el tráfico a un sitio web ocupado. Permite alojar archivos estáticos de tu sitio web, como JavaScript, CSS, imágenes, vídeos, y los aloja en miles de servidores por todo el mundo. Cuando un usuario solicita uno de estos archivos alojados, el CDN busca cuál es el servidor más cercano físicamente y envía una le envía una petición en lugar de hacerlo a uno situado potencialmente en la otra punta del mundo.
Bases de datos
A menudo los sitios web necesitarán una forma de almacenar información para sus usuarios. Los servidores web pueden comunicarse con bases de datos para almacenar y recuperar datos de ellos. Las bases de datos pueden ir desde un simple archivo de texto plano a complicados clústers de múltiples servidores proporcionando velocidad y resiliencia. Más adelante verás las bases de datos más comunes: MySQL, MSSQL, MongoDB, GrapQL, Postgres, y más; cada una tiene sus propias características.
WAF (Web Application Firewall)
Un WAF está situado entre tu petición web y el servidor web; su principal propósito es proteger al servidor web de ataques de hacking o denegación de servicio. Éste analiza las peticiones a la web en busca de los ataques más comunes, así como si la petición proviene de un navegador real o de un bot. También comprueba si una cantidad excesiva de peticiones web están siendo enviadas utilizando algo llamado limitación de tasa, que solo permite cierto número de peticiones de una misma IP por segundo. Si una petición es considerada un ataque potencial, será ignorada y nunca se enviará al servidor web.

Contesta las preguntas
- ¿Qué se puede usar para alojar archivos estáticos y aumentar la velocidad de la visita de un cliente a un sitio web?
- ¿Cómo lo hace un balanceador de carga para asegurarse de que un host sigue estando activo?
- ¿Qué podemos utilizar para ayudarnos contra el hacking de un sitio web?
CÓMO FUNCIONAN LOS SERVIDORES WEB
¿Qué es un servidor web?
Un servidor web es un software que escucha conexiones entrantes y después utiliza el protocolo HTTP para entregar contenido web a sus clientes. El software de servidor web más común que encontrarás es Apache, Nginx, IIS y NodeJS. Un servidor web entrega archivos desde lo que llamamos un directorio raíz, el cual se define en los ajustes del software. Por ejemplo, Nginx y Apache comparten la misma ubicación por defecto de /var/www/html en sistemas operativos Linux, e IIS usa C:\inetpub\wwwroot para sistemas operativos Windows. Así, por ejemplo, si pedimos el archivo http://www.example.com/picture.jpg, el servidor enviaría el archivo /var/www/html/picture.kpg desde su disco duro local.
Hosts virtuales
Los servidores web pueden alojar múltiples sitios web con distintos nombres de dominio; para lograr esto, utilizan hosts virtuales. El software del servidor web comprueba el hostname que está siendo solicitado por las cabeceras HTTP y lo compara con los hosts virtuales (los hosts virtuales son simplemente archivos de configuración basados en texto). Si encuentra una coincidencia, el sitio web correcto será proporcionado. Si no encuentra coincidencia, en su lugar se mostrará el sitio web que se proporcione por defecto.
Los hosts virtuales pueden tener su directorio raíz mapeado a distintas localizaciones en el disco duro. Por ejemplo, one.com puede estar mapeado a /var/www/website_one, y two.com puede estar mapeado a /var/www/website_two.
No existe un límite en el número de sitios web distintos que puedes alojar en un servidor web.
Contenido estático Vs dinámico
El contenido estático, como su nombre sugiere, es contenido que nunca cambia. Los ejemplos más comunes son imágenes, JavaScript, CSS, etc., pero también puede incluir HTML que nunca cambie. Además, estos son archivos que son servidos directamente desde el servidor web sin haberles hecho cambios.
El contenido dinámico, por otra parte, es contenido que puede cambiar con distintas peticiones. Tomemos, por ejemplo, un blog. En la página de inicio del blog se mostrarán las últimas entradas. Si se crea una nueva entrada, la página de inicio se actualizará con la última entrada, o un segundo ejemplo puede ser una página de búsqueda en un blog. Dependiendo de la palabra que busquemos, se mostrarán distintos resultados.
Estos cambios a lo que acabamos viendo se hacen en lo que llamamos el Backend con el uso de lenguajes de programación y scripting. Se le llama Backend porque lo que se hace allí se hace tras bambalinas. No podemos ver el código fuente de los sitios web HTML y ver cómo sucede lo que hay en el Backend, mientras que el HTML es el resultado del proceso desde el Backend. Todo lo que vemos en nuestro navegador se conoce como el Frontend.
Lenguajes de Backend y scripting
No hay mucho límite a lo que un lenguaje de Backend puede lograr, y éstos son lo que hacen a un sitio web interactivo para el usuario. Algunos ejemplos de estos lenguajes (sin ningún orden en particular) son PHP, Python, Ruby, NodeJS, Perl y muchos más. Estos lenguajes pueden interactuar con las bases de datos, llamar a servicios externos, procesar datos del usuario, y otras muchas cosas. Un ejemplo muy básico de PHP sería si solicitamos el sitio web http://example.com/index.php?name=adam.
Si el index.php fue construido como el que sigue:
<html><body>Hello <?php echo $_GET[“name”];?></body></html>
Su salida se mostraría así al cliente:
<html><body>Hello adam</body></html>
Puedes ver que el cliente no ve ningún código PHP debido a que éste está en el Backend. Esta interactividad abre un montón de problemas de seguridad para las aplicaciones web que no se han creado de forma segura, como verás en otros módulos.
Contesta las preguntas
- ¿Qué utiliza el software de servidor web para alojar múltiples sitios?
- ¿Cuál es el nombre del tipo de contenido que puede cambiar?
- ¿Ve el cliente el código Backend? Yay/Nay (Sí/No)
QUIZ
Haz clic en el botón “View Site” a la derecha. Usando todo lo que has aprendido en los otros módulos, captura y suelta las fichas en el orden correcto de cómo funciona una petición a un servidor web para revelar la flag.
Nota: Cuando coloques una ficha en su posición correcta, se resaltará en verde. Cuando una ficha está en la posición errónea, estará resaltada en rojo. Asegúrate de no refrescar la página, ya que eso reiniciaría la fichas y dejaría lo hecho en blanco.
Contesta las preguntas
- Flag.
1 comentario en «Juntando todo. Pre-Security Path (10)»