Resumen

El uso de productos fitosanitarios para los cultivos es de vital importancia si queremos asegurar la integridad de los mismos. Siendo España uno de los países con uno de los sectores agroalimentarios más potente del mundo, no es una sorpresa saber que también es uno de los que más invierte en fitosanitarios.

La integración con SAP Business One, asegura a las PYMEs una ventaja competitiva en el sector. Cada día más empresas dedicadas a la venta de fitosanitarios invierten en el desarrollo de Terminales Punto de Venta (TPV) para agilizar estos procesos de venta.

Este Trabajo Fin de Grado pretende crear un TPV que se integre completamente con SAP Business One, probablemente el mejor ERP para las PYMEs. Este proyecto se desarrolla con metodologías AGILE y siempre orientado al cliente, ya que dispone de uno real desde el inicio.

Como resultado final se obtiene un producto totalmente solvente y seguro ante una diversidad de ataques estudiados durante la carrera. Este producto actualmente se encuentra desplegado y a falta de últimos retoques para ser lanzado a productivo en el cliente que lo solicitó.

Algunas de las tecnologías utilizadas para este proyecto son:

Es el Framework de código abierto (basado en Javascript, jQuerty y LESS) que proporciona SAP para sus aplicaciones. Al utilzar este TPV el famoso ERP SAP Business One, parece la decisión más acertada trabajar directamente con su propio Framework.

Node.js es un entorno en tiempo de ejecución multiplataforma, de código abierto, para la capa del servidor basado en el lenguaje de programación JavaScript, asíncrono, con E/S de datos en una arquitectura orientada a eventos y basado en el motor V8 de Google.

Se escogió principalmente por ser uno de los entornos más utilizados a día de hoy en el desarrollo de Backends. Permite realizar un desarrollo muy rápido y contiene infinidad de librerías que agilizan y facilitan el desarrollo. Además es uno de los recomendados por SAP Business One.

SAP Business One es una solución de software de gestión empresarial (ERP) referente a nivel mundial, accesible y fácil de usar, pensada específicamente para las pequeñas y medianas empresas (PYMES).

WireFrame es el software empleado para realizar el prototipado de las aplicaciones.

Con esto se consigue la aprobación del cliente o la sugerencia de cambios/mejoras, antes de comenzar el desarrollo, ganando así tiempo.

Let's encrypt es la CA (Certification Authority) empleada para generar los certificados de la aplicación.

Es totalmente gratuita y fue creada con la premisa de velar por un futuro con webs seguras.

Es el entorno en tiempo de ejecución elegido para desplegar el Frontend.

Se eligió principalmente por su perfecta integración con la herramienta de Certbot (para más detalles consultar la memoria del proyecto).

Es el cliente software de Let's encrypt, que permite generar certificados de forma más sencilla y se integra completamente con Ngix.

Es la herramienta utilizada para realizar pruebas a nuestro Backend.

Uno de sus grandes fuertes es la posibilidad de crear test automatizados para probar nuestra API (Backend).

Diseño orientado al cliente

Puesto que se trata de un proyecto real y tiene cliente final, la metodología de desarrollo que se sigue es un modelo de desarrollo enfocado al cliente adaptado a nuestro modelo de empresa.

Modelo de desarrollo adaptado al cliente

Modelo de desarrollo enfocado al cliente

Medidas de Seguridad

Un buen profesor de seguridad me dijo un día: “Existen dos tiempos de empresas, las que han sido hackeadas y las que todavía no lo saben”, por esto mismo en este proyecto se exploran formas de hacer la herramienta lo más segura posible.

Cada día más el sector de las PYMEs se encuentra amenazado por los ataques cibernéticos (casi un 70% (maestro 2018)). Desde el secuestro de datos hasta la venta de los mismos a la competencia. Esto puede resultar tanto en pérdidas enormes para las mismas como incluso su propio cierre.

Debido a que está aplicación está orientada a las PYMEs y los recientes ataques que se han detectado en otros clientes de la empresa en la que se realiza este TFG, propuse añadir una serie de medidas de seguridad a este proyecto, las cuales fueron aceptadas por la empresa y paso a detallar a continuación.

Esas medida de seguridad son:

Al ser requisito alojar el TPV en internet, es necesario que la comunicación entre el Frontend y el Backend sea segura y privada. Para garantizar esto se emplea la herramienta Certbot, con el fin de generar certificados válidos y auto-renovables.

Si bien que las comunicaciones sean seguras es vital, también los es que la información relaccionada con credenciales (en este caso cookies), también se cifre en la transmisión. Gracias a tener estos certificados, podemos hacerlo sin problemas.

Para paliar el posible robo de contraseñas en el Backend se dispone de una función encargada de calcular el hash de la contraseña y añadirle un “salt” (esto se hace con el fin de evitar el “crackeo” de las contraseñas mediante “rainbow tables”), gracias a esto cada vez que se hace login se comparan los hashes de las contraseñas, así la contraseña nunca quedará en la BD (recordemos de que la transmisión de la contraseña sí que se hace en texto plano desde el Frontend a el Backend, pero por un canal totalmente cifrado.

Con el fin de controlar en todo momento a que zonas se está accediendo del Backend, se implementan unos logs personalizados. Estó ayudará tanto a detectar posibles zonas vulneradas como a facilitar el mantenimiento de zonas.

Para conocer en todo momento quien accede a nuestro servicio y combinándolo con la medida anterior saber a que zonas. Se implementa un IDS.

En este caso se optó por emplear una api de rastreo Ip conocida como ipData.

Ahora que sabemos quien accede y a que parte del sistema, podemos llevarlo al siguiente nivel.

En el caso de la Blacklist se implementa para bloquear el acceso a Ips que consideremos malignas (en el caso de IpData, nos da información sobre Ips potencialmente dañinas que son inmediatamente bloqueadas).

La Whitelist sin embargo se emplea para acceder a zonas restringidas de la aplicación, como pudieran ser los endpoints encargados de añadir Ips a la Blacklist (Si dejásemos esto abierto, cualquiera podría bloquear cualquier Ip).


Si quieres saber más sobre las medidas de seguridad, te recomiendo que leas la memoria del proyecto.

Frontend

El Frontend es la cara visible del TPV, desarollado en su totalidad con SAP ui5, este busca tener un diseño agradable, así como ser full-responsive, ya que de esta forma garantizamos que pueda ser accesible desde cualquier tipo de dispositivo.

Otra parte vital de este desarrollo es garantizar la accesibilidad del mismo, por ello se sigue el patron de desarrollo de SAP Fiori garantizando así un diseño accesible.

También con el fin de combatir con problemas relacionados con la visión, se implementan una serie de temas que además de permitir la personalización del sistema permite poner la aplicación en modo daltónico y alto contraste.

Temas soportados por la aplicación

Temas soportados por la aplicación

Arquitectura

La arquitectura seguida para este proyecto es una ampliación del famoso MVC.

Arquitectura Frontend

Modelo MVC extendido


Algo importante es que todo el desarrollo se hace siempre pensando y cumpliendo los principios S.O.L.I.D, con el fin de lograr un resultado más sólido.

Principios SOLID

Principios S.O.L.I.D

Estructura IndexDB

Con el fin de mejorar los tiempos de carga de la aplicación, se implementa una IndexDB (DB que se almacena en el navegador, siempre del lado del cliente), para de esta forma cachear los datos y así mejorar los tiempos de carga.

Arquitectura IndexDB

Arquitectura IndexDB

Backend

El en Backend es donde reside toda la lógica de la aplicación.

Arquitectura

Para la arquitectura del Backend, se ha realizado una adaptación del famoso modelo MVC (utilizado para el Frontend). Gracias a esta adaptación se consigue integrar el MVC al Backend y por tanto garantizar tanto la modularidad como la robustez del proyecto.

Estructura del Backend

Estructura del Backend


Como sucede en el Frontend el desarrollo se realiza también siguiendo los principios S.O.L.I.D

Principios SOLID

Principios S.O.L.I.D

Arquitectura del sistema

El diseño de la arquitectura de servidores es el siguiente. Está inspirado en una DMZ (Zona desmilitarizada) y su principal premisa es garantizar la funcionalidad de otras partes del sistema si alguna otra se ve comprometida, ya sea por una vulnerabilidad o por un fallo en el sistema.

arquitectura de servidores

Arquitectura de servidores

Web

Para acceder a la web desarrollada en este TFG accede desde:


https://apps.novotic.es

Contacto

Si necesitas más información no dudes en contactarme