Seguridad básica - Asegurando el servidor contra XSS
Clase 33 de 35 • Curso de Node.js con Hapi
Contenido del curso
Creando un sitio básico con Hapi
- 4

El objeto h, response y sus herramientas
04:22 min - 5

Uso de plugins - Contenido estático
08:11 min - 6

Plantillas con Handlebars
06:08 min - 7

Renderizado de vistas - Layout y template del home
10:32 min - 8

Recibiendo parámetros en una ruta POST - Creación del registro
05:56 min - 9

Definir una mejor estructura con buenas prácticas en Hapi
10:00 min - 10

Validando la información - Implementando Joi
07:13 min - 11

Introducción a Firebase
03:12 min - 12

Creando un modelo y guardando en firebase
14:23 min - 13

Implementando el login y validación del usuario
11:40 min - 14

Autenticación de usuarios - Cookies y estado
11:52 min - 15

Manejando errores
07:47 min - 16

Visualización de errores
13:45 min - 17

Controlar el error 404 en inert y el error de validación
10:42 min - 18

Repaso - Creación del modelo y controlador para preguntas
10:39 min - 19

Repaso - Creación de las rutas para crear preguntas
06:26 min - 20

Listar las últimas preguntas en el home
08:01 min
Aplicacion de conceptos avanzados
- 21

Enrutamiento avanzado - visualizando una pregunta
10:35 min - 22

Enrutamiento avanzado - respondiendo una pregunta
11:51 min - 23

Generando la lógica de la plantilla según si es creador o contribuidor
08:25 min - 24

Métodos de servidor - respuesta correcta
09:01 min - 25

Usando métodos de servidor
13:29 min - 26

Manejo del caché - Agregando el home al caché
08:51 min - 27

Procesamiento de archivos - Aceptando imágenes
15:10 min - 28

Logging con Good - Monitoreando el servidor
09:16 min - 29

Creación de plugins - Teoría
02:49 min - 30

Creación de plugins - Implementando un API REST
15:31 min - 31

Estrategías de autenticación - Asegurando el API REST
08:50 min - 32

Seguridad básica - Asegurando el servidor contra CSRF
06:42 min - 33

Seguridad básica - Asegurando el servidor contra XSS
Viendo ahora
Herramientas de desarrollo
Otra de las vulnerabilidades que es muy común es XSS o Cross-site scripting, que es un tipo de ataque de seguridad por inyección en el que un atacante inyecta datos o algún script o códio malicioso desde otro sitio web diferente.
Para manejar y corregir esta vulnerabilidad en la seguridad de nuestra aplicación implementaremos la estrategia de CSP o Content Security Policy para definir específicamente los orígenes desde los cuales vamos a permitir la ejecución de scripts o el acceso a recursos desde y hacia nuestra aplicación. Para esto usaremos un par de plugins adicionales: Blankie y scooter (scooter por ser dependencia de blankie).
Instalamos ambos desde la terminal: npm i blankie scooter -S y requerimos ambos en nuestro script principal.
Al igual que los plugins anteriores, registramos blankie con las siguientes opciones:
await server.register ([ scooter, {
'plugin': blankie,
'options': {
'defaultSrc': `'self' 'unself-inline' <urls adicionales>`,
'styleSrc': `'self' 'unself-inline' <urls adicionales>`,
'fontSrc': `'self' 'unself-inline' <urls adicionales>`,
'scriptSrc': `'self' 'unself-inline' <urls adicionales>`,
'generateNonces': false
}
}])
Finalmente, al acceder a nuestra aplicación, notaremos que sólo serán permitidos los scripts y recursos que provengan desde las fuentes explícitamente definidas en las opciones indicadas al registrar el plugin, de lo contrario simplemente no se cargarán.
Si quieres aprender más sobre temas de Seguridad en la web, te invito a ver luego el Curso de Análisis de Vulnerabilidades Web con OWASP.