0% encontró este documento útil (0 votos)
177 vistas49 páginas

Seguridad en Aplicaciones Web y CMS

Este documento describe un proyecto final para una maestría en seguridad de sistemas de información. El proyecto involucra el análisis de riesgos y vulnerabilidades de una aplicación web cuyo contenido será gestionado por el CMS Strapi. El documento explica conceptos clave como aplicaciones web, historia, interfaz, lenguajes de programación, ciberseguridad, CMS, Strapi y su arquitectura. También incluye un análisis de riesgos de la aplicación web utilizando herramientas como Gtmetrix y Pent

Cargado por

Que Verbo Bata
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
177 vistas49 páginas

Seguridad en Aplicaciones Web y CMS

Este documento describe un proyecto final para una maestría en seguridad de sistemas de información. El proyecto involucra el análisis de riesgos y vulnerabilidades de una aplicación web cuyo contenido será gestionado por el CMS Strapi. El documento explica conceptos clave como aplicaciones web, historia, interfaz, lenguajes de programación, ciberseguridad, CMS, Strapi y su arquitectura. También incluye un análisis de riesgos de la aplicación web utilizando herramientas como Gtmetrix y Pent

Cargado por

Que Verbo Bata
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Universidad Mariano Gálvez de Guatemala

Facultad de Ingeniería de Sistemas de Información


Maestría en Seguridad de Sistemas de Información
Seguridad en Aplicaciones
Ing. MA. Juan Pedro Cáceres López

PROYECTO FINAL

KENNET ANDERSÓN CASTILLO BARRIOS 1993-15-10513

MARIO RENÉ GONZALEZ CORADO 1993-15-4807

DARY BERNAN CASTILLO Y CASTILLO 1993-14-13061

MOISÉS ISMAEL SANTOS GÓMEZ 1993-15-12199

KERVINS ISAAC PINEDA CERMEÑO 1993-15-23624

Plan Fin de Semana

Sección “A”
Índice
Introducción............................................................................................................. 1

Aplicación Web ....................................................................................................... 2

Historia .................................................................................................................... 2

Interfaz .................................................................................................................... 3

Consideraciones técnicas ....................................................................................... 3

Estructuras de las aplicaciones web ....................................................................... 4

Lenguajes de programación .................................................................................... 4

Posibles fallos técnicos en una aplicación web ....................................................... 5

Errores de codificación y configuración ............................................................... 5

Pruebas de penetración ...................................................................................... 6

Análisis de riesgo por capas ................................................................................ 7

Probabilidad de ocurrencia ................................................................................ 10

Probabilidad de impacto .................................................................................... 10

Amenazas.......................................................................................................... 11

Activos ............................................................................................................... 13

Evaluación del riesgo ............................................................................................ 15

Ciberseguridad ...................................................................................................... 17

Tipos de ciberamenazas ................................................................................... 17

CMS (Content Management System) ................................................................... 19

¿Qué es un CMS? ............................................................................................. 19

¿Por qué usar CMS? ......................................................................................... 20

Strapi..................................................................................................................... 21
¿Qué es Strapi? ................................................................................................ 21

Capa cliente....................................................................................................... 21

Componentes necesarios .................................................................................. 21

Integraciones ..................................................................................................... 22

Capa de servicios: ............................................................................................. 23

Capa de servidor ................................................................................................... 25

Requerimientos ................................................................................................. 25

Sistemas operativos Compatibles ..................................................................... 25

Arquitectura Strapi ................................................................................................ 26

Capa lógica de negocios ....................................................................................... 26

Capa de datos ................................................................................................... 26

Análisis de riesgos y vulnerabilidades ................................................................... 30

Gtmetrix ............................................................................................................. 30

Pentest-Tools .................................................................................................... 32

Riesgos:............................................................................................................. 33

Recomendaciones: ............................................................................................ 33

Conclusión: ........................................................................................................ 33

Software y tecnología de servidor encontrados ................................................. 33

Riesgo: .............................................................................................................. 34

Recomendaciones: ............................................................................................ 34

Conclusión: ........................................................................................................ 34

Faltan encabezados de seguridad HTTP .......................................................... 34

Riesgo: .............................................................................................................. 35

Recomendaciones: ............................................................................................ 35
Conclusión: ........................................................................................................ 36

Móvil Viewport ................................................................................................... 37

Compatible con iPhone / móvil .......................................................................... 37

Sistema de gestión de contenidos ..................................................................... 37

Codificación de documentos UTF-8 .................................................................. 37

Estándares de documentos ............................................................................... 38

Conclusiones......................................................................................................... 39

Bibliografías .......................................................................................................... 41

Anexos .................................................................................................................. 43
1

Introducción

El constante crecimiento de la tecnología ha cambiado los procesos en la


mayoría de disciplinas principales que se aplican desde Pymes hasta grandes
empresas. El entorno web es uno de los que más ha cobrado auge por su fácil
acceso desde diferentes plataformas y dispositivos no importando la ubicación
geográfica, pero hay un tema que es inherente dentro de este entorno y es la
seguridad, pues la información es uno de los recursos más importantes de una
organización, he aquí la importancia de la integridad, confidencialidad y
disponibilidad de la misma.

La seguridad se aplica de forma ordenada y estructurada acorde al entorno


y necesidades que la aplicación web presenta o requiere. Esta se sustenta de
normas, técnicas y actividades previamente analizadas y estudiadas para prevenir
el robo, perdida o daño.

A su vez este proyecto va dirigido al análisis en base a pruebas de


seguridad a una aplicación web, la carga de contenido de esta aplicación web va a
ser gestionado por Strapi el cual es un CMS (content management system). Este
gestor hará la administración del contenido más flexible y sencilla, ya que
partiendo de la lógica de negocio se crea toda una configuración en cuestión de
minutos. Una de las muchas ventajas es que también nos brinda es la fácil
configuración de la base de datos, manejo de autenticación, funcionalidades de
almacenamiento de archivos, puntos de acceso a la data para ser consumida
(REST API).
2

Aplicación Web

En la ingeniería de software, las aplicaciones web se denominan aquellas


aplicaciones que los usuarios pueden utilizar accediendo a un servidor web a
través de Internet o accediendo a una intranet a través de un navegador. En otras
palabras, es una aplicación (software) que está codificada en un idioma admitido
por el navegador web ejecutado por un navegador confiable.

La popularidad de las aplicaciones web se debe a la utilidad de los


navegadores web como clientes ligeros, la independencia de los sistemas
operativos y la facilidad para actualizar y mantener las aplicaciones web sin
distribuir e instalar software a miles de usuarios potenciales. Es importante
mencionar que las páginas web pueden contener elementos que permitan una
comunicación activa entre los usuarios y la información.

Historia

Inicialmente, la Web era solo una colección de páginas estáticas,


documentos, etc., para ver o descargar. El siguiente paso en su proceso de
desarrollo es desarrollar un método de página dinámica que hará que la página
mostrada tenga características dinámicas (es decir, generada a partir de datos de
solicitud). Este método se llama CGI ("Interfaz de puerta de enlace común") y
define un mecanismo a través del cual se puede pasar información entre el
servidor y algunos programas externos.
3

CGI sigue siendo muy utilizado, la mayoría de los servidores web permiten
su uso debido a su sencillez. Además, te dan total libertad para elegir el lenguaje
de programación que deseas utilizar.

Interfaz

La interfaz web tiene ciertas restricciones sobre las funciones


proporcionadas a los usuarios. Existen algunas funciones comunes en las
aplicaciones de escritorio. Por ejemplo, la tecnología web estándar no admite
dibujar o arrastrar y soltar en la pantalla. Los desarrolladores web generalmente
usan un lenguaje interpretado (script) en el lado del cliente para agregar más
funcionalidad, especialmente para brindar una experiencia interactiva que no
requiera volver a cargar la página cada vez (esto generalmente molesta a los
usuarios).

Recientemente se ha desarrollado tecnología para coordinar estos


lenguajes con la tecnología del lado del servidor. Por ejemplo, AJAX es una
tecnología de desarrollo web que combina varias tecnologías.

Consideraciones técnicas

Una ventaja significativa es que las aplicaciones web deberían funcionar


igual independientemente de la versión del sistema operativo instalado en el
cliente. En vez de crear clientes para Windows, Mac OS X, GNU/Linux y otros
sistemas operativos, la aplicación web se escribe una vez y se ejecuta igual en
4

todas partes. Sin embargo, hay aplicaciones inconsistentes escritas con HTML,
CSS, DOM y otras especificaciones estándar para navegadores web que pueden
causar problemas en el desarrollo y soporte de estas aplicaciones, principalmente
debido a la falta de adicción de los navegadores a dichos estándares web.
Adicionalmente, la posibilidad de los usuarios de personalizar muchas de las
características de la interfaz (tamaño y color de fuentes, tipos de fuentes,
inhabilitar Javascript) puede interferir con la consistencia de la aplicación web.

Estructuras de las aplicaciones web

Aunque existen muchas variantes posibles, las aplicaciones web suelen


estar estructuradas como aplicaciones de tres niveles. Los navegadores web
proporcionan la primera capa en su forma más común y un motor que puede
utilizar determinadas tecnologías web dinámicas. (Ejemplo: PHP, Java Servlets o
ASP, ASP.NET, CGI, ColdFusion o Ruby.

Finalmente, la base de datos constituye la tercera y última capa. El


navegador web envía la solicitud al nivel intermedio, que utiliza consultas y
actualizaciones de la base de datos para proporcionar servicios, y luego
proporciona una interfaz de usuario.

Lenguajes de programación

Existen numerosos lenguajes de programación empleados para el


desarrollo de aplicaciones web en el servidor, entre los que destacan:
5

 PHP.
 Java, con sus tecnologías Java Servlets y JavaServer Pages (JSP).
 Javascript.
 Perl.
 Ruby.
 Python.
 HTML.
 XML.

Se utilizan para proporcionar datos adecuados a las necesidades del usuario,


según cómo los defina el propietario de la aplicación. Los datos se almacenan en
algunas bases de datos estándar.

Posibles fallos técnicos en una aplicación web

Errores de codificación y configuración

El 65% de las vulnerabilidades encontradas provienen de un desarrollo


deficiente de aplicaciones, como fallas de codificación o errores de configuración.
Las organizaciones deben encontrar un sistema de defensa en capas para
encontrar errores antes de que sea demasiado tarde.

Las pruebas de aplicaciones web son muy útiles para prevenir problemas
de seguridad en sitios web o aplicaciones. Si esto no se hace, los piratas
informáticos pueden beneficiarse de estas vulnerabilidades, causando daños
irreparables o pérdida de datos a la empresa.
6

Pruebas de penetración

Se recomienda encarecidamente que el sistema de defensa de la


organización se someta a pruebas de penetración periódicas. Esta es la única
forma de localizar problemas de seguridad en sitios web y aplicaciones y encontrar
formas de reducir los riesgos.

Las pruebas de penetración son básicamente un pirateo controlado, en el que


los evaluadores que trabajan en nombre de la organización buscan errores
informáticos como piratas informáticos. Una vez finalizada la prueba, se
enumerarán una serie de recomendaciones para mejorar la estrategia de
seguridad de la información de la empresa.

 El 48% de las aplicaciones probadas son vulnerables al acceso no


autorizado.
 Entre ellos, el 44% de los datos personales está en riesgo.
 El 70% de las personas son vulnerables a la filtración de información
empresarial clave.
 El 17% de los errores permiten a los ciberdelincuentes controlar la
aplicación.
7

Análisis de riesgo por capas

Tabla 1: Análisis de riesgos por capas

ANÁLISIS DE RIESGOS CAPA

Activo Amenaza Probabilidad Impacto Riesgo Tratamiento

Error de los usuarios 3 3 9 REDUCIR


Error del administrador 1 5 5 REDUCIR
Página web Denegación de servicios 1 5 5 REDUCIR
Inyección SQL 2 5 10 REDUCIR
Error de configuración 1 5 5 REDUCIR
Perdida de información 2 5 10 REDUCIR
Error del administrador 1 5 5 REDUCIR
Daño a la integridad 2 5 10 REDUCIR
Base de
Fuga de información 2 4 8 REDUCIR
datos
Sobrecarga de servicios 1 5 5 REDUCIR
Error de configuración 1 5 5 REDUCIR
Denegación de servicios 1 5 5 REDUCIR
Servidor de Caída del sistema por sobrecarga 2 4 8 REDUCIR
imágenes Sobrecarga de servicios 2 4 8 REDUCIR
8

Denegación de servicios 1 4 4 ACEPTAR


Destrucción de información 2 5 10 REDUCIR
Servicios de Denegación de servicios 1 4 4 ACEPTAR
verificación Acceso no autorizado 4 5 20 MITIGAR
de Google Error de usuario 3 4 12 TRANSFERIR
Caída del sistema por sobrecarga 2 4 8 REDUCIR
Servidor de Sobrecarga de servicios 2 4 8 REDUCIR
archivos Denegación de servicios 1 4 4 ACEPTAR
Destrucción de información 2 5 10 REDUCIR
Servicios de Caída de Servicios 2 3 6 REDUCIR
encriptación Falta de pago de Servicios 2 5 10 REDUCIR
AWS Errores de mantenimiento / actualización de programas (software) 2 5 10 REDUCIR
Errores de mantenimiento / actualización de programas (software) 2 5 10 REDUCIR
Web
Caída de Servicios 2 5 10 REDUCIR
aplication
Error del administrador 1 5 5 REDUCIR
Firewall
Error de configuración 1 5 5 REDUCIR
Error del administrador 1 5 5 REDUCIR
Error de configuración 1 5 5 REDUCIR
Backend
Sobrecarga de servicios 2 4 8 REDUCIR
Denegación de servicios 1 4 4 ACEPTAR
9

Error del administrador 1 5 5 REDUCIR


Error de usuario 3 3 9 REDUCIR
Servicios
Error de configuración 1 5 5 REDUCIR
REST
Caída de servicios 2 4 8 REDUCIR
Denegación de servicios 1 4 4 ACEPTAR

Fuente: Incibe

Tabla 2: Criterios de aceptación de riesgo


CRITERIOS DE ACEPTACIÓN DEL RIESGO
RANGO DESCRIPCIÓN
Riesgo <=4 La organización considera el riesgo puede ser aceptado
Riesgo >= 5 && <=10 La organización considera el riesgo se tiene que reducir
Riesgo >= 11 && <=14 La organización considera el riesgo se tiene que transferirlos
Riesgo >= 15 La organización considera el riesgo se tiene que mitigarlos

Fuente: Incibe
10

Probabilidad de ocurrencia

Tabla 3: Estimación de probabilidad

TABLA PARA ESTIMAR LA PROBABILIDAD

VALOR DESCRIPCIÓN
Muy Bajo (1) La amenaza se materializa a lo sumo una vez cada dos año.
Bajo (2) La amenaza se materializa a lo sumo una vez cada año.
Medio (3) La amenaza se materializa a lo sumo una vez cada mes.
Alto (4) La amenaza se materializa a lo sumo una vez cada semana.
Muy Alto (5) La amenaza se materializa a lo sumo una vez cada dia

Fuente: Incibe

Probabilidad de impacto

Tabla 4: Estimación de impacto

TABLA PARA ESTIMAR EL IMPACTO

VALOR DESCRIPCIÓN
Muy Bajo El daño derivado de la materialización de la amenaza no tiene consecuencias relevantes para la
(1) organización.
11

El daño derivado de la materialización de la amenaza no tiene consecuencias poco notables para la


Bajo (2)
organización.
El daño derivado de la materialización de la amenaza tiene consecuencias reseñables para la
Medio (3)
organización.
El daño derivado de la materialización de la amenaza tiene consecuencias graves reseñables para la
Alto (4)
organización.
Muy Alto El daño derivado de la materialización de la amenaza tiene consecuencias catastróficas reseñables para
(5) la organización.

Fuente: Incibe

Amenazas

Tabla 5: Catalogo de amenazas

Amenazas
Fuego
Daños por agua
Desastres naturales
Corte del suministro eléctrico
Condiciones inadecuadas de temperatura o humedad
Fallo de servicios de comunicaciones
Interrupción de otros servicios y suministros esenciales
Desastres industriales
Errores de los usuarios
Errores del administrador
12

Errores de configuración
Degradación de los soportes de almacenamiento de la información
Difusión de software dañino
Errores de mantenimiento / actualización de programas (software)
Errores de mantenimiento / actualización de equipos (hardware)
Caída del sistema por sobrecarga
Pérdida de equipos
Indisponibilidad del personal
Abuso de privilegios de acceso
Acceso no autorizado
Denegación de servicio
Robo
Indisponibilidad del personal
Extorsión
Ingeniería social
inyección SQL
Fuga de información
Introducción de falsa información
Alteración de la información
Corrupción de la información
Destrucción de información
Interceptación de información (escucha)

Fuente: Incibe
13

Activos

Tabla 6: Activos de las capas


Capas Identificador Activo
A1 Página web
A2 Base de datos
A3 Servidor de imágenes
A4 Servicios de verificación de Google
CLOUD A5 Servidor de archivos
A6 Servicios de encriptación AWS
A7 Web aplication Firewall
A8 Backend
A9 Servicios REST
A10 ordenador de escritorio
A11 Smartphones empresariales
A12 Ordenador Portátil
SO
A13 Licencia de Antivirus
A14 Navegador Web
A15 Tablets Empresariales
A16 Firewall
A17 Alarmas
DISPOSITIVOS DE A18 Switch
SEGURIDAD A19 HoneyPot
A20 Router
A21 Cámaras de seguridad
Fuente: Incibe
15

Evaluación del riesgo

El nivel de riesgo se estima basándose en la probabilidad de un escenario


de incidentes, comparado con el impacto negativo estimado. La probabilidad de
que se produzca un escenario de incidentes se obtiene mediante una amenaza
que explota la vulnerabilidad con una probabilidad concreta.

En los casos en los que se consideró que no era posible proporcionar una
estimación fundada de la probabilidad de un evento, el valor es n/a. En muchos
casos, la estimación de la probabilidad depende en gran medida del modelo de
arquitectura que se está considerando.

El riesgo resultante se mide en una escala de 1 a 5 en este modelo que


puede evaluarse con respecto a los criterios de aceptación del riesgo. Esta escala
de riesgo también puede compararse con una sencilla clasificación general de
riesgos:

 Muy bajo: 1
 Bajo: 2
 Medio: 3
 Alto:4
 Muy alto:5
16

Evitar el riesgo

Consiste en no realizar las actividades que dan espacio al riesgo. Aplica


cuando ninguna otra respuesta al riesgo es adecuada. Por ejemplo, cuando las
posibles respuestas no son efectivas o la exposición al riesgo es demasiado
inaceptable para el negocio.

Aceptar el riesgo

La exposición a pérdidas es reconocida y aceptada. No se toma acción alguna


para atender un riesgo específico y las pérdidas serán aceptadas cuando ocurran.
La decisión de aceptar un riesgo corresponde a los altos niveles de la
organización y debe quedar documentada y ser comunicada.

Compartir/transferir el riesgo

Significa reducir la probabilidad o el impacto de un riesgo transfiriendo o


compartiendo una parte del riesgo con otra entidad. Algunas técnicas comunes
son la adquisición de pólizas de seguro o bien, tercerizar las operaciones o
proyectos que implican riesgos relevantes.

Mitigar el riesgo

Se refiere a tomar acciones de mitigación para reducir le frecuencia o el


impacto de un riesgo. Formas comunes de mitigación incluyen reforzar los
procesos de gestión de TI, implementar controles con ayuda de COBIT 5 o utilizar
otras prácticas conocidas y marcos de referencia.
17

Ciberseguridad

La ciberseguridad de la red es la práctica de proteger computadoras,


servidores, dispositivos móviles, sistemas electrónicos, redes y datos de ataques
maliciosos. También conocida como seguridad de la tecnología de la información
o seguridad de la información electrónica. El término se aplica a diferentes
contextos, desde los negocios hasta la informática móvil, y se puede dividir en
varias categorías comunes.

La seguridad de la red es la práctica de proteger las redes informáticas de


los intrusos (ya sean atacantes dirigidos o malware oportunista).

La seguridad de la información puede proteger la integridad y privacidad de


los datos durante el almacenamiento y la transmisión.

La seguridad operativa incluye procesos y decisiones para administrar y


proteger los recursos de datos. Esta categoría incluye los permisos que los
usuarios necesitan para acceder a la red y el proceso de determinar cómo
almacenar datos y dónde compartirlos.

La recuperación ante desastres y la continuidad empresarial definen cómo


responde una organización a los incidentes de ciberseguridad o cualquier otro
incidente que provoque la interrupción de las operaciones o la pérdida de datos.
La estrategia de recuperación ante desastres instruye a la organización sobre
cómo restaurar sus operaciones e información para restaurar las mismas
capacidades operativas que antes del incidente.

Tipos de ciberamenazas

Las amenazas a las que se enfrenta la ciberseguridad son tres:


18

 El delito cibernético incluye agentes individuales o grupos que atacan


a los sistemas para obtener beneficios financieros o causar
interrupciones.
 Los ciberataques a menudo involucran la recopilación de información
con fines políticos.
 El ciberterrorismo tiene como objetivo debilitar los sistemas
electrónicos para causar pánico o temor.

La ciberseguridad es importante porque los sitios web desprotegidos están


expuestos a sufrir situaciones como:

 Robo de información guardada en el servidor web.


 Explotación de datos personales –desde direcciones de correo electrónico
hasta información de pagos– de los visitantes para utilizarlos
inadecuadamente (robo de identidad, extorsiones, abuso de confianza,
estafas, etc.).
 Redireccionamiento a páginas web maliciosas.
 Mostrar anuncios no deseados.
 Engañar a los bots y rastreadores de los motores de búsqueda para hacer
SEO de “sombrero negro” (Black Hat SEO), cuyo objetivo es atraer tráfico a
sitios web que no siguen las mejores prácticas de internet.
 Utilizar las computadoras de los visitantes para hacer minería de datos.
 Recibir ataques DDoS que pueden alentar tu página o hacer que deje de
funcionar de manera inesperada, haciéndola inaccesible para los visitantes.
 Realizar descargas de software malicioso.
19

CMS (Content Management System)

¿Qué es un CMS?

Un sistema gestor de contenido o CMS (abreviatura en inglés) es un


software que se ejecuta en un navegador y le permite crear, administrar y
modificar sitios web y su contenido sin necesidad de conocimientos de
programación. CMS proporciona una interfaz gráfica de usuario donde puede
administrar todos los aspectos del sitio web. Puede crear y editar contenido,
agregar imágenes y videos y configurar el diseño general del sitio web.

En otras palabras, CMS es una herramienta que permite a los editores


crear, categorizar y publicar cualquier tipo de información en una página web.
Generalmente, CMS funciona contra bases de datos, por lo que el editor solo
necesita actualizar la base de datos para incluir nueva información o editar
información existente.

Actualmente, la mayoría de las páginas que visitamos están publicadas bajo


CMS, ya que nos permite mantener el contenido de manera ágil y al mismo tiempo
permite que cualquiera pueda trabajar en esta tarea independientemente de sus
conocimientos técnicos. Entre todos los sistemas de gestión de contenidos,
WordPress sin duda destaca y es sin duda el más popular y ampliamente utilizado
en la actualidad.
20

¿Por qué usar CMS?

Hay muchas razones por las que usar CMS es muy importante, pero
podemos dividirlas en dos partes: Desde el punto de vista del desarrollador, CMS
puede ahorrar mucho trabajo en la creación de un sitio web, porque se han
implementado muchas tareas repetitivas que debe realizar cada sitio al instalar el
CMS.

De esta manera, los profesionales no tienen que preocuparse por cosas


como el panel de administración, y establecen derechos de acceso seguros para
que los usuarios puedan usar la entrada de contraseña para permitir que los
visitantes dejen sus comentarios en el sitio.

Algunos ejemplos de CMS para sitios estáticos, los más populares, son:

 Ghost: Es un producto con enfoque comercial, pero que también se


encuentra en Github para poder usarse. El flujo de trabajo se realiza por
medio de API Rest.
 Strapi: Este producto tiene más enfoque de comunidad. También permite
editar el contenido y su configuración se realiza por medio de API REST o
GraphQL.
 Netlify CMS: Este CMS permite la administración del contenido usando un
repositorio Git. Gracias a ello require mucha menos configuración y no
necesitamos disponer de un servidor web, sino que usamos el servicio de
Netlify.
 Publii: Este otro CMS se usa también por medio de un repositorio Git. El
generador de sitios estáticos viene incluido en el propio CMS.
21

Strapi

¿Qué es Strapi?

Strapi es un CMS de código abierto que brinda a los desarrolladores la


libertad de elegir sus herramientas y marcos favoritos al mismo tiempo que
permite a los editores administrar y distribuir fácilmente su contenido. Al hacer que
el panel de administración y la API sean extensibles a través de un sistema de
complementos, Strapi permite a las empresas más grandes del mundo acelerar la
entrega de contenido mientras construyen hermosas experiencias digitales.

Capa cliente
La capa de cliente está formada por la lógica de la aplicación a la que el
usuario final accede directamente mediante una interfaz de usuario. La lógica de la
capa de cliente incluye clientes basados en navegadores, componentes que se
ejecuten en un equipo de escritorio o clientes móviles.

Componentes necesarios

 Acceso a internet.
 Navegador web: aplicación necesaria para tener conexión a la web el cual
se encarga de interpretar la información de archivos para ser visualizados
por el usuario.
22

Integraciones

Posterior a la generación de una API desde strapi cualquier lenguaje que


tenga un cliente HTTP que le permite ejecutar solicitudes a una API, por ende,
interactuar con ella.

Una de las ventajas de la integración de Strapi con una multitud de


frameworks, lenguajes de programación frontend o backend, aquí se muestran
uno de los más populares.

Imagen 1: Frameworks populares

Fuente: https://strapi.io/documentation/
23

Capa de servicios:

Este CMS nos proporciona una serie de Endpoints que cumplen con los verbos
básicos utilizados por http, todas las respuestas y peticiones, deben estar en
formato JSON.

 Listado y estructura de Endpoints:

Imagen 2: Estructura Endpoints

Fuente: https://strapi.io/documentation/
24

 Consultas complejas al API:

Imagen 3: Consultas al API

Fuente: https://strapi.io/documentation/
25

Capa de servidor

Requerimientos

Para proporcionar el mejor entorno posible para Strapi, existen algunos


requisitos, que se aplican para diferentes ambientes.

 Node LTS (v10 o V12) es un entorno de tiempo de ejecución de JavaScript


(de ahí su terminación en .js haciendo alusión al lenguaje JavaScript). Este
entorno de tiempo de ejecución en tiempo real incluye todo lo que se
necesita para ejecutar un programa escrito en JavaScript.
 Herramientas de compilación estándar típicas para su sistema operativo
(el build-essentialspaquete en la mayoría de los sistemas basados en
Debian)
 Al menos 1 núcleo de CPU (muy recomendado al menos 2)
 Al menos 2 GB de RAM (se recomienda moderadamente 4)
 Espacio de almacenamiento mínimo requerido recomendado por su sistema
operativo o 32 GB de espacio libre.

Sistemas operativos Compatibles

 Ubuntu> = 18.04 (solo LTS)


 Debian> = 9.x
 CentOS / RHEL> = 8
 macOS Mojave o más reciente (ARM no es compatible)
 Windows 10
 Docker - repositorio de Docker
26

Arquitectura Strapi

Strapi está planteado como todos los cms, con única diferencia es que
strapi trabaja con las tecnologías nuevas como lo es NodeJs y ReactJs.

Imagen 4: Arquitectura CMS

Fuente: Elaboración Propia

Capa lógica de negocios

Capa de datos
Base de datos soportadas por Strapi:

 MySQL (desde la versión 5.6 o posterior): MySQL es un sistema de


gestión de bases de datos relacional desarrollado por Oracle Corporation y
está considerada como la base datos open source más popular del mundo.
Su puerto por defecto es el 3306.
27

 MariaDB (desde la versión 10.1 o posterior):


MariaDB es un sistema de administración de bases de datos relacionales
(DBMS) de código abierto que es un reemplazo directo compatible para la
tecnología de base de datos MySQL. Su puerto por defecto es el 3306.

 PostgreSQL (desde la versión 10 o posterior): PostgreSQL (pronunciado


post-gress-QL) es un sistema de gestión de bases de datos relacionales
(DBMS) de código abierto desarrollado por un equipo mundial de
voluntarios. Su puerto por defecto es 5432.

 SQLite (desde la versión 3 o posterior): Es una biblioteca en proceso que


implementa un motor de base de datos transaccional SQL autónomo, sin
servidor, sin configuración. Por ende, no necesita de ningún puerto para
escuchar y aceptar nuevas conexiones.

 MongoDB(desde la versión 3.6 o posterior): MongoDB es una base de


datos multiplataforma orientada a documentos que proporciona alto
rendimiento, alta disponibilidad y fácil escalabilidad. MongoDB trabaja en el
concepto de colección y documento. Su puerto por defecto es 27017.

Strapi es un CMS sin encabezado de código abierto basado en Node.js para


todas las necesidades de API y gestión de contenidos de los desarrolladores.

Permite crear API funcionales en cuestión de minutos y desarrollar software


sin la molestia de las complejidades de un CMS. Todos los datos están
disponibles a través de una API 100 % personalizable para adaptarse a cualquier
necesidad. Se encarga del backend para que tú no tengas que hacerlo. Strapi se
usa en departamentos de producción de empresas de todos los tamaños.
28

Strapi es un CMS sin cabeza de código abierto que les encanta a los
desarrolladores. Es más que un Framework Node.js y más que un CMS sin
cabeza, ahorra tiempo de desarrollo de API a través de un hermoso panel de
administración que cualquiera puede usar.

Fuente abierta

Gratis y de código abierto, para siempre. El código base completo está


disponible en GitHub y lo mantienen cientos de colaboradores.

Autohospedado

La seguridad es fundamental para las empresas. Aloje sus datos de forma


segura, en sus propios servidores. Cumple con GDPR.

Personalizable

Cada proyecto requiere requisitos específicos. Personalice fácilmente el


panel de administración y la API.

RESTful o GraphQL

Consuma la API desde cualquier cliente (React, Vue, Angular), aplicaciones


móviles o incluso IoT, usando REST o GraphQL.

100% JavaScript

Un idioma para gobernarlos a todos. Utilice JavaScript en todas partes:


tanto para su front-end como para su CMS sin cabeza.
29

Extensible por diseño

Sistema de complementos incluido. Instale el sistema de autenticación, la


administración de contenido, los complementos personalizados y más, en
segundos.

Autenticaciones y permisos

Asegure sus puntos finales al permitir o no permitir que los usuarios


accedan a su API por función.
30

Análisis de riesgos y vulnerabilidades

Gtmetrix

A través del servicio que nos provee https://gtmetrix.com/ podemos hacer


pruebas de rendimiento a nuestra app web o sitio web, en este caso nuestro CMS.

Se detalla tiempos de carga, números de peticiones realizadas y el total en


MB que tuvo que cargar la app.

Imagen 6: Performance report gtmetrix

Fuente: www.gtmetrix.com

El reporte también nos detalla información importante sobre qué elementos


puede ser causa de ralentización en la carga de la aplicación.
31

Imagen 7: Performance app web

Fuente: www.gtmetrix.com
32

Elementos que se recomiendan optimizar según el reporte generado.

Imagen 7: Recomendaciones a optimizar

Fuente: www.gtmetrix.com

Pentest-Tools

Informe de análisis de vulnerabilidades de sitios web.

Imagen 8: Reporte Pentest-Tools

Fuente: https://pentest-tools.com/home
33

Riesgos:

La comunicación entre el navegador web y el servidor se realiza mediante


el protocolo HTTP, que transmite datos sin cifrar a través de la red. Así, un
atacante que logra interceptar la comunicación a nivel de red, es capaz de leer y
modificar los datos transmitidos (incluyendo contraseñas, tokens secretos,
información de tarjetas de crédito y otros datos sensibles).

Recomendaciones:

Le recomendamos que vuelva a configurar el servidor web para utilizar


HTTPS, que cifra la comunicación entre el navegador web y el servidor.

Conclusión:

Configurar el protocolo HTTP e implementar HTTPS permitirá restringir el


cifrado de los datos a través de la red. Esto no permitirá la intercepción de datos
en el envío de información y almacenar de una manera segura la información
temporal de los usuarios al ingresar al sitio web.

Software y tecnología de servidor encontrados

Tabla 7: Software encontrado


Software / Version Categoría

webpack Build CI Systems

Fuente: https://pentest-tools.com/home
34

Riesgo:

Un atacante podría usar esta información para montar ataques específicos


contra el tipo y la versión de software identificados

Recomendaciones:

Le recomendamos que elimine la información que permita la identificación


de plataforma de software, tecnología, servidor y sistema operativo: encabezados
del servidor HTTP, metainformación HTML, etc.

Conclusión:

Utilizar métodos más confiables de empaquetado de ficheros (CSS, JS,


JSON, etc.), y verificar el acceso en el proceso de envío de información para evitar
ataques e intercepciones de documentos en el proceso de recepción o subida al
host.

Faltan encabezados de seguridad HTTP

Tabla 8: Encabezados faltantes

HTTP Security Header Header Role Status

X-XSS-Protection Mitigates Cross-Site Scripting (XSS) attacks Not set

X-Content-Type-Options Prevents possible phishing or XSS attacks Not set


Fuente: https://pentest-tools.com/home
35

Riesgo:

El encabezado HTTP de X-XSS-Protection indica al navegador que deje de


cargar páginas web cuando detecten ataques de Cross-Site Scripting (XSS)
reflejados. La falta de este encabezado expone a los usuarios de la aplicación a
ataques XSS en caso de que la aplicación web contenga dicha vulnerabilidad.

El encabezado HTTP X-Content-Type-Options está dirigido al navegador


Internet Explorer y evita que reinterprete el contenido de una página web (MIME-
sniffing) y, por lo tanto, anule el valor del encabezado Content-Type). La falta de
este encabezado podría provocar ataques como Cross-Site Scripting o phishing.

Recomendaciones:

Recomendamos configurar el encabezado X-XSS-Protection en "X-XSS-


Protection: 1; modo = bloquear". Más información sobre este problema:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection

Recomendamos configurar el encabezado X-Content-Type-Options en "X-


Content-Type-Options: nosniff". Más información sobre este problema:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-
Options
36

Conclusión:

Establecer un protocolo de activación del comando según el navegador


utilizado para que este no permita ataques Cross-Site Scripting. De esta manera
se evitará a incompatibilidad del X-XSS dentro de navegadores que aún permiten
deshabilitar el uso de JS en línea permitiendo accesos inesperados de usuarios a
partes del sitio con verificación.

BuiltWith

Es una plataforma que cuenta con tecnologías que nos brinda información
de una aplicación web con solamente ingresar la url de esta en el campo de
búsqueda. Lo que nos devuelve es información específica acerca de nuestra
aplicación tal como información del servidor, frameworks javascript utilizados,
widgets, si dispone de algún tipo de seguimiento o análisis, si dispone de
seguimiento en redes sociales, codificación UTF8, tipo de videos, etc.

Imagen 9: Reporte Builtwith

Fuente: https://builtwith.com/
37

Móvil Viewport

Esta página utiliza la metaetiqueta viewport, lo que significa que el


contenido puede optimizarse para contenido móvil.

Compatible con iPhone / móvil

Estadísticas de uso compatibles con iPhone / dispositivos móviles ·


Descargar la lista de todos los sitios web que utilizan dispositivos compatibles con
iPhone / dispositivos móviles. El sitio web contiene un código que permite que la
página admita contenido de iPhone / móvil.

Sistema de gestión de contenidos

Strapi es un CMS sin cabeza de código abierto que les encanta a los
desarrolladores. Es más que un Framework Node.js y más que un CMS sin
cabeza, ahorra tiempo de desarrollo de API a través de un hermoso panel de
administración que cualquiera puede usar.

Codificación de documentos UTF-8

UTF-8 (formato de transformación UCS / Unicode de 8 bits) es una


codificación de caracteres de longitud variable para Unicode. Es la codificación
preferida para las páginas web.
38

Estándares de documentos

 Tipo de documento HTML5


Estadísticas de uso de HTML5 DocType · Descargar la lista de todos los sitios
web usando HTML5 DocType.

 Javascript
JavaScript es un lenguaje de secuencias de comandos que se utiliza con
mayor frecuencia para el desarrollo web del lado del cliente.

 Seguridad de transporte estricta


Estrictas de uso del Seguro de Transporte Estadísticas

El encabezado HTTP Strict-Transport-Security (HSTS) indica al navegador que


solo use https.

 HSTS
Obliga a los navegadores a comunicarse solo con el sitio mediante HTTPS.
39

Conclusiones

Gtmetrix

La ralentización en las aplicaciones web o sitios web pueden acabar en


errores como “Connection timed out”, los cuales pueden exponer información
relevante como los enlaces que proveen los servicios, utilizar servicios de escaneo
de aplicaciones o sitos webs, como GTmetrix nos da una pauta a evaluar qué
elementos pueden provocar ese tipo de ralentizaciones y tomar las medidas
correctivas para solucionar estos problemas y evitar que esto se pueda convertir
en un problema grave que perjudique nuestra aplicación o sito web a largo plazo.

Pentest-Tools

La herramienta pentest-tools es necesaria para identificar ciertos puntos


que otras herramientas no proveen, al utilizarla podemos verificar vulnerabilidades
para el software del lado del servidor, problema de seguridad con respecto a las
cookies HTTP, problemas de seguridad con respecto a las políticas de acceso del
cliente Listado de directorio no encontrado, entrada de contraseña, verificar si las
comunicaciones son seguras, información de sistema y software que son
necesarios para fortificar cada parte de nuestra red para no tener riesgos.

BuiltWith

Las tecnologías que se usan para la creación de un sitio web o una


aplicación web no suelen ser fáciles de detectar simplemente con el uso de la
40

plataforma que se está utilizando, esta es solo una de las herramientas que brinda
BuiltWith, con solo insertar el dominio en el buscador de esta herramienta se tiene
acceso a todas las tecnologías sobre las cuales está cimentada una plataforma
web. Abriéndonos paso a un mundo de posibilidades en tanto a la toma de
decisiones en el rendimiento de nuestra plataforma web, como también en la
seguridad de la misma, mostrándonos incluso el cambio de tecnologías que se ha
hecho durante el tiempo de vida de nuestra aplicación en análisis.
41

Bibliografías

1. Alejandro (2019). Pentest-tools, como hacer pentesting sin hacerlo


realmente. Obtenido de Sitio Web:
https://protegermipc.net/2019/06/26/pentest-tools-review/

2. Arturo Barrera (2020). Qué es un cms y para qué sirve Obtenido de Sitio
Web. https://www.nextu.com/blog/que-es-un-cms-y-para-que-sirve/

3. David Rey (2011). El uso y seguridad de un CMS. Obtenido de Sitio Web:


https://dreyacosta.com/el-uso-de-un-cms-y-su-seguridad/

4. Fernando Paul Lara Galicia (2020). ¿Qué es seguridad en la web?


Obtenido de Sitio web: https://mx.godaddy.com/blog/que-es-seguridad-en-
la-web-manual-basico/

5. Gustavo (2020). ¿Qué es un CMS? Obtenido de Sitio Web:


https://www.hostinger.es/tutoriales/que-es-un-cms/ España.

6. Hanna Guijarro (2018). Aplicaciones web tiene importantes fallos técnicos.


Obtenido de Sitio web : https://www.itgovernance.eu/blog/es/el-52-de-las-
aplicaciones-web-tiene-importantes-fallos-tecnicos
42

7. Kasperry (2020). ¿Qué es la ciberseguridad? Obtenido de Sitio Web:


https://latam.kaspersky.com/resource-center/definitions/what-is-cyber-
security

8. Netifly (2020). Strapi un CMS. Obtenido de Sitio Web:


https://jamstack.org/headless-cms/strapi/

9. Tomas Sierra (2018). Tipos de vulnerabilidades en aplicaciones web.


Obtenido de Sitio Web: https://tomassierra.com/tipos-de-vulnerabilidades-
en-aplicaciones-web/

10. Universidad Politécnica de Madrid (2020). Sistemas de gestión de


contenido. Obtenido de Sitio Web: https://desarrolloweb.com/home/cms
43

Anexos

Roles y permisos

Este complemento proporciona una forma de proteger su el CMS con un


proceso de autenticación completo basado en JWT. Este complemento también
viene con una estrategia de ACL que le permite administrar los permisos entre los
grupos de usuarios.

Administrar permisos de rol

Rol público

Este rol se usa cuando recibe una solicitud que no tiene Autorización
encabezado. Si concede algunos permisos en esta función, todos podrán acceder
a los puntos finales que seleccionó. Esta es una práctica común para seleccionar
find/ findOne/endpoints cuando desea que su aplicación front-end acceda a todo el
contenido sin desarrollar la autenticación y autorización del usuario.

Rol autenticado

Este es el rol predeterminado que se otorga a cada nuevo usuario si no se


proporciona ningún rol en la creación. En este rol, podrá definir rutas a las que
puede acceder un usuario.

Autenticación

Uso de tokens

Se puede usar un token jwt para realizar solicitudes de API con permisos
restringidos. Para realizar una solicitud de API como usuario, se coloca el token
44

jwt en una autorización encabezado de la solicitud GET. Una solicitud sin un token
asumirá los permisos públicos de rol de forma predeterminada. Permite modificar
los permisos de la función de cada usuario en el panel de administración. Las
fallas de autenticación devuelven un error 401 (no autorizado).

Contraseña olvidada

Esta acción envía un correo electrónico a un usuario con el enlace a su


página de restablecimiento de contraseña. Este enlace contiene un parámetro de
URL code que se requiere para restablecer la contraseña del usuario.

Expresiones Regulares

Las expresiones regulares son patrones que se utilizan para hacer coincidir
combinaciones de caracteres en cadenas. En JavaScript, las expresiones
regulares también son objetos. Estos patrones se utilizan con los métodos exec() y
test() de RegExp, y con match(), matchAll(), replace(), replaceAll(), search() y
split() métodos de String.

Escribir un patrón de expresión regular

Un patrón de expresión regular se compone de caracteres simples, como


/abc/, o una combinación de caracteres simples y especiales, como /ab*c/ o
/Capítulo (\d)\.\d*/. Los patrones simples se construyen con caracteres para los
que deseas encontrar una coincidencia directa.
45

NodeJs

Es un entorno de tiempo de ejecución de JavaScript. Este entorno de


tiempo de ejecución en tiempo real incluye todo lo que se necesita para ejecutar
un programa escrito en JavaScript. También aporta muchos beneficios y soluciona
muchísimos problemas.

Creado por los desarrolladores originales de JavaScript. Lo transformaron


de algo que solo podía ejecutarse en el navegador en algo que se podría ejecutar
en los ordenadores como si de aplicaciones independientes se tratara. Gracias a
Node.js se puede ir un paso más allá en la programación con JavaScript no solo
creando sitios web interactivos, sino teniendo la capacidad de hacer cosas que
otros lenguajes de secuencia de comandos como Python pueden crear.

ReactJs

React es una librería Javascript focalizada en el desarrollo de interfaces de


usuario. Así se define la propia librería y evidentemente, esa es su principal área
de trabajo. Sin embargo, lo cierto es que en React encontramos un excelente
aliado para hacer todo tipo de aplicaciones web, SPA (Single Page Application) o
incluso aplicaciones para móviles. Para ello, alrededor de React existe un
completo ecosistema de módulos, herramientas y componentes capaces de
ayudar al desarrollador a cubrir objetivos avanzados con relativamente poco
esfuerzo.

Por tanto, React representa una base sólida sobre la cual se puede
construir casi cualquier cosa con Javascript. Además facilita mucho el desarrollo,
ya que nos ofrece muchas cosas ya listas, en las que no necesitamos invertir
tiempo de trabajo. En este artículo te ampliaremos esta información, aportando
además diversos motivos por los que usar React como librería del lado del cliente.
46

Imagen 10: Visualización del CMS

Fuente:

Imagen 11: Diagrama Entidad Relación

Fuente: ER Studio

También podría gustarte