Auditoría y CTF

Aplicaciones Web (II)

La arquitectura de tres niveles se basa en tres capas:

  • Capa de presentación: Se encarga de mostrar la información recibida por parte del servidor web al cliente. Es el código del lado del cliente formado por el lenguaje de marcado como HTML o lenguajes como CSS, Javascript…
  • Capa lógica: Es la capa principal y más compleja, ya que es la encargada del funcionamiento de la aplicación web. Las peticiones http gestionadas por el servidor web buscara el recurso solicitado y hará a su vez una petición de traducción al servidor de aplicaciones traduciendo el código del lado del servidor escrito en un lenguaje predeterminado. Este resultado se enviará al servidor web y este a su vez al cliente. Esta capa divide el código del lado del servidor en tres partes: 
    • Modelo: Es la asociación entre la información entrante por la capa de negocio, por ejemplo lenguaje SQL del servidor de base de datos; y el formato o lenguaje de programación de la aplicación del lado del servidor de aplicaciones. 
    • Vista: Es la presentación expuesta al usuario en el navegador. 
    • Controlador: Comunica y maneja las peticiones realizadas por cliente/servidor.
  •  Capa de negocio: Es la capa donde se encuentran los datos. Los datos son información, y debe siempre permanecer protegida ante ataques mal intencionados y oculta ante los usuarios. Se gestiona mediante un sistema de gestión de bases de datos. El servidor de aplicaciones, realizará una petición al servidor de base de datos para obtener datos necesarios para la aplicación, por ejemplo el login a Gmail.

 

Desarrollo y lenguajes:
Los desarrolladores de aplicaciones web son programadores que dependiendo del lado cliente/servidor donde se encuentren, usarán un lenguaje de programación distinto.

  • Programación Back-end: Una persona que se dedique a desarrollar aplicaciones web del lado del servidor, trabajara con lenguajes como PHP, Python, Ruby, .Net, SQL, Javascript, etc. Es la parte oculta al usuario y encargada del funcionamiento de la aplicación. 
  • Programación Front-end: Parte del desarrollo encargada de la apariencia final cara al usuario desde el navegador. Los lenguajes típicos son HTML5, CSS, Javascript entre otros. 
  • Programación Full-stack: Debido a la arquitectura de tres niveles y la diferenciación de back-end y front-end, existirán desarrolladores encargados de una parte de la aplicación web. Por ejemplo un desarrollador de back-end, programara en PHP y en SQL para el acceso a las bases de datos. Sin embargo, se considera un lenguaje full-stack a aquel que se usa tanto en el lado del cliente como en el servidor, un ejemplo claro es Javascript.

 

Existe una variedad amplia de lenguajes de programación para crear aplicaciones web, siempre ayudados de un marco de trabajo o frameworks. Los lenguajes más usados son:
  • Javascript: Es un lenguaje usado en el lado del cliente, pero esta escalando puestos obteniendo mucha fuerza en el lado del servidor debido al servidor node.js y el uso del framework Angular.js creado por Google.
  • Perl: Es un lenguaje muy potente para el manejo de ficheros tomando características del lenguaje C.
  • Python: Es un lenguaje sencillo y potente, muy usando en aplicaciones de redes y seguridad informática. Tiene un framework bastante conocido llamado Django.
  • Ruby: Es un lenguaje interpretado sencillo y potente como python. Posee un framework llamado Ruby on Rails, que permite la creación de aplicaciones web con buenos resultados visuales siguiendo el modelo MVC (Modelo-Vista-Controlador), y se puede instalar en cualquier servidor web. 
  • Java: Es un lenguaje potente y versátil con grandes posibilidades de crear aplicaciones web de todo tipo. Muy potente en aplicaciones relacionadas con la red. 
  • C#: Lenguaje creado por propietarios, Microsoft. Usado para servidores .NET.
  • PHP: Es un lenguaje scripting del lado del servidor más utilizado. Se basa en el lenguaje C y en Perl, y se encuentra incrustado en código HTML de una página web, mediante la apertura de una etiqueta <?php. La página web tendrá una extensión distinta, en este caso .php, donde el servidor web detecta que es de un tipo de aplicación realizando dicha petición al servidor de aplicaciones. Existe un framework llamado Zend.
  •  JSP: Es similar al anterior pero basado en Java. La extensión de este tipo de archivos son .jsp.
  • ASP: De igual similitud a los dos anteriores pero basado en Microsoft. 

Tipos de servidores web existentes en el mercado. Los más populares son:

  • Apache: Es un servidor web muy potente y usado. Es gratuito y de código abierto. Para programar en PHP, lo mas normal es usar un servidor web Apache.
  • nginx: Su característica principal en la que destacar es la prestación que ofrece cuando hay que atender numerosas conexiones. Esta cogiendo actualmente bastante aceptación en el mercado.
  • IIS: Es propietario de Microsoft. Tiene licencia, aunque aparece como componente en los sistemas operativos Windows Server.
  • Apache Tomcat: Servidor web para ejecutar aplicaciones de tipo Java.
  • Node.js: Servidor web de Javascript con el modulo Express.js.

 

En cuanto al sistema operativo donde instalar nuestro servidor web, podemos mencionar tres opciones:

  • Windows: Actualmente es el sistema operativo a nivel usuario que más demanda existe en el mercado. Tenemos la opción de instalar un servidor web Apache o IIS propietario de Microsoft. Lo ideal en este entorno de trabajo, es usar un Windows Server como sistema operativo del servidor.
  • Linux: Su cuota de mercado es mucho menor que la de Windows pero en cuanto a sistema operativo posee numerosas herramientas y un entorno comunitario muy rico para el desarrollo web. Debido al auge de Apache este servicio corre la mayoría de las veces sobre un sistema Linux, ya sea un Debian, Ubuntu o CentOS. Existen más diversidad de distribuciones gratuitas y el coste económico que supone contratar un servidor real en Internet con este S.O.
  • OSX: Cada vez más en la actualidad, infinidad de usuarios disponen equipos de esta marca. Por ello cada vez más desarrolladores programan aplicaciones web para este sistema operativo. También este sistema operativo al igual que Linux están basados en Unix.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Los datos introducidos se guardarán en nuestra base de datos como parte del comentario publicado, como se indica en la política de privacidad.