Seguridad web con NodeJS en un sistema de gestión de horarios laborales

Martínez Lascorz, Jorge (2017). Seguridad web con NodeJS en un sistema de gestión de horarios laborales. Thesis (Master thesis), E.T.S.I. de Sistemas Informáticos (UPM).

Description

Title: Seguridad web con NodeJS en un sistema de gestión de horarios laborales
Author/s:
  • Martínez Lascorz, Jorge
Contributor/s:
  • Frutos Velasco, Juan Alberto de
Item Type: Thesis (Master thesis)
Masters title: Ingeniería Web
Date: 1 July 2017
Subjects:
Freetext Keywords: Seguridad web, NodeJS, ExpressJS, JWT, Angular, Mocha, Typescript, Cordova, ElectronJS, TravisCI, Codecov, NPM, multiplataforma, AWS.Web Security, NodeJS, ExpressJS, JWT, Angular, Mocha, Typescript, Cordova, ElectronJS, TravisCI, Codecov, NPM, multi platform, AWS
Faculty: E.T.S.I. de Sistemas Informáticos (UPM)
Department: Sistemas Informáticos
Creative Commons Licenses: Recognition - No derivative works - Non commercial

Full text

[img]
Preview
PDF - Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (2MB) | Preview
[img] Archive (ZIP) - Users in campus UPM only
Download (2MB)

Abstract

En este Proyecto Final de Máster se han abordado los temas de seguridad web al desarrollar un servidor con NodeJS y su framework más conocido, ExpressJS. Se ha desarrollado una aplicación de gestión de horarios laborales para poner en manifiesto dichas capacidades. Para ello se ha implementado un sistema en el que el trabajador pueda ingresar su hora de entrada y salida laboral, y pueda llevar un control de las horas trabajadas. A su vez, un usuario administrador puede gestionar las jornadas laborales de todos los trabajadores de la empresa. De esta manera se puede observar un sistema de roles, control de usuarios, y acceso a base de datos, con todos los temas de seguridad que ello conlleva. (Almacenamiento de passwords cifradas con ‘salt’, autenticación con JsonWebTokens, protección frente SQL Injection, XSS, cabeceras en las peticiones http…) Para verificar el correcto funcionamiento se utilizarán las herramientas de análisis de vulnerabilidades disponibles en el proyecto OWASP, como el proyecto NodeSecurityProyect, específico para entornos NodeJS, o ZAP. El trabajo de este proyecto no está enfocado al desarrollo de una aplicación compleja, con una lógica destacable ni con una arquitectura fuera de lo común, principalmente se centra en en tres puntos destacables: tal y como se ha descrito anteriormente, la seguridad web con NodeJS, por otro lado la potencia de los frameworks basados en Javascript, y por último pero no menos importante, la automatización y despliegue de la aplicación en cloud. Este proyecto ha sido desarrollado íntegramente con frameworks basados en Javascript, muchos de ellos no vistos durante el Máster, por lo que el tiempo de formación en estas tecnologías ha sido considerable, veáse por ejemplo el uso de NodeJS como motor del servidor, Angular 4 con Typescript (a partir de ahora, Angular) para el desarrollo del cliente, o Mocha y Chai para la ejecución de tests. Todo este sistema nos permite crear desde una aplicación web, hasta una aplicación móvil híbrida multiplataforma con ayuda de Cordova, e incluso una aplicación de escritorio gracias a ElectronJS. Todo ello basándose en el mismo código fuente. Por otro lado se ha utilizado Github y se han automatizado las tareas de compilación y tests a través de un sistema de integración continua como TravisCI, junto a Codecov para estudiar la cobertura de código de los tests realizados. Así mismo, se ha utilizado NPM como gestor de dependencias y sistema de generación de código de distribución. Por último, se ha desplegado la aplicación en un servidor de Amazon Web Services, en el que está alojado el servidor y la aplicación web. Por otro lado se ha compilado la aplicación para dispositivos iOS y Android, y está disponible para su descarga a través de la plataforma Play Store de Google. A su vez, está disponible la versión de escritorio tanto para Mac, Linux y Windows a través de un enlace de descarga en la web. In this Master Final Project we have addressed the topics of web security developing a server with NodeJS and its best known framework, ExpressJS. A time management application has been developed to demonstrate these capabilities. For this, a system in which the worker can enter his time of entry and exit work has been implemented, and also can control the hours worked. At the same time, an administrator user can manage the working days of all employees of the company. This way we can observe a system of roles, user control, and database access, with all the safety issues that this entails. (Storage of encrypted passwords, authentication with JsonWebTokens, protection against SQL Injection, XSS, headers in http requests ...) To verify the correct operation will use the vulnerability analysis tools available in the OWASP project, such as the project NodeSecurityProyect, specific to NodeJS apps, or ZAP, an an analisys security tool. The work of this project is not focused on the development of a complex application, with a notable logic or an unusual architecture, it mainly focuses on three important points: as described above, web security with NodeJS , On the other hand the power of frameworks based on Javascript, and last but not least, the automation and deployment of the application in the cloud. This project has been developed entirely with frameworks based on Javascript, many of them not seen during the Master, so the training time in these technologies has been considerable, see for example the use of NodeJS as server engine, Angular 4 with Typescript (from now on, Angular) for client development, or Mocha and Chai for the tests. This whole system allows us to create from a web application, to a multiplatform hybrid mobile application with the help of Cordova, and even a desktop application thanks to ElectronJS. All based on the same source code. Additionally, has been used Github as a cloud repository and have compiled tasks and tests through a system of continuous integration as TravisCI and Codecov, to study the code coverage of the tests performed. Also, NPM has been used as a dependency manager and distribution code generation system. Finally, the application has been deployed to an Amazon Web Services server, where the server and web application are hosted. On the other hand has compiled the application for iOS devices and Android, and is available for its download through the Google Play Store platform. In turn, the desktop version is available for both Mac, Linux and Windows through a download link on the web.

More information

Item ID: 48283
DC Identifier: http://oa.upm.es/48283/
OAI Identifier: oai:oa.upm.es:48283
Deposited by: Biblioteca Universitaria Campus Sur
Deposited on: 27 Oct 2017 07:08
Last Modified: 10 Nov 2017 19:30
  • Logo InvestigaM (UPM)
  • Logo GEOUP4
  • Logo Open Access
  • Open Access
  • Logo Sherpa/Romeo
    Check whether the anglo-saxon journal in which you have published an article allows you to also publish it under open access.
  • Logo Dulcinea
    Check whether the spanish journal in which you have published an article allows you to also publish it under open access.
  • Logo de Recolecta
  • Logo del Observatorio I+D+i UPM
  • Logo de OpenCourseWare UPM