Estructura de una Aplicación Web
Las aplicaciones web son sistemas complejos que comprenden varios componentes que trabajan juntos para repartir una buena experiencia de usuario. En su núcleo. una aplicación web tiene dos partes principales: el frontend y el backend.
- Frontend: Esta es la interfaz de usuario de la aplicación, típicamente construida usando frameworks como React, Angular o Vue.js. Se comunica con el backend vía APIs.
- Backend: Este componente del servidor procesa las peticiones del usuario, interactúa con las bases de datos y sirve información al frontend. Se suele desarrollar usando lenguajes como PHP, Python y JavaScript y frameworks como Node.js, Django o Laravel.
Uno de los aspectos fundamentales de las aplicaciones web es el modelo cliente-servidor. En este modelo, el cliente manda una petición al servidor. El backend lo procesa y manda una respuesta. El cliente y la comunicación del servidor suele pasar a través de protocolos HTTP/HTTPS.

Server-Side Scripting y Manejo de Archivos
Los scripts del lado del servidor corren en el servidor y generan el contenido del frontend, el cual se manda al cliente. A contrario que los scripts del lado del cliente como JavaScript en el navegador, los scripts del lado del servidor pueden acceder al sistema de ficheros y bases de datos del servidor.
El manejo de archivos es una parte importante del server-side scripting. Las aplicaciones web suelen necesitar leer o escribir archivos del servidor. Por ejemplo, leer archivos de configuración, guardar archivos subidos del usuario o incluir código de otros archivos.
Por ejemplo, la aplicación de abajo incluye un archivo basado en el input del usuario.

Si este input no es correctamente validado y sanitizado, un atacante puede explotar el parámetro vulnerable para incluir archivos maliciosos o acceder a archivos sensibles en el servidor. En este caso, el atacante podría ver los contenidos del archivo /etc/passwd.

