Les dejo la versión actualizada del proyecto. Hasta el momento algunas cosas cambiaron.
Saludos.
Introducción
Qué necesitas para este curso y qué aprenderás sobre Node.js con Hapi
Conceptos principales de hapi y creación de nuestro primer servidor
Breve historia y estado actual
Creando un sitio básico con Hapi
El objeto h, response y sus herramientas
Uso de plugins - Contenido estático
Plantillas con Handlebars
Renderizado de vistas - Layout y template del home
Recibiendo parámetros en una ruta POST - Creación del registro
Definir una mejor estructura con buenas prácticas en Hapi
Validando la información - Implementando Joi
Introducción a Firebase
Creando un modelo y guardando en firebase
Implementando el login y validación del usuario
Autenticación de usuarios - Cookies y estado
Manejando errores
Visualización de errores
Controlar el error 404 en inert y el error de validación
Repaso - Creación del modelo y controlador para preguntas
Repaso - Creación de las rutas para crear preguntas
Listar las últimas preguntas en el home
Aplicacion de conceptos avanzados
Enrutamiento avanzado - visualizando una pregunta
Enrutamiento avanzado - respondiendo una pregunta
Generando la lógica de la plantilla según si es creador o contribuidor
Métodos de servidor - respuesta correcta
Usando métodos de servidor
Manejo del caché - Agregando el home al caché
Procesamiento de archivos - Aceptando imágenes
Logging con Good - Monitoreando el servidor
Creación de plugins - Teoría
Creación de plugins - Implementando un API REST
Estrategías de autenticación - Asegurando el API REST
Seguridad básica - Asegurando el servidor contra CSRF
Seguridad básica - Asegurando el servidor contra XSS
Herramientas de desarrollo
Depuración del proyecto
Ecosistema de Hapi
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Convierte tus certificados en títulos universitarios en USA
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Adrián Estrada
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.
Aportes 5
Preguntas 1
Les dejo la versión actualizada del proyecto. Hasta el momento algunas cosas cambiaron.
Saludos.
al parecer blankie ya no usa scooter sino @hapi/scooter porque no me encontraba el plugin hasta que instalé el otro
La documentación de los plugins es lamentable. Poca o nula información :face
A mi no me sirve @hapi/scooter. Sale que la version de hapi no la acepta 😦
Para instalar el plugin de blankie, en la nueva versión de Hapi que se realiza mediante la dependencia @hapi/hapi, hay que hacerlo de la siguiente manera:
const blankie = require('blankie');
const scooter = require('@hapi/scooter');
await server.register([scooter, {
plugin: blankie,
options: {
defaultSrc: `'self' 'unsafe-inline'`,
styleSrc: `'self' 'unsafe-inline' https://maxcdn.bootstrapcdn.com`,
fontSrc: `'self' 'unsafe-inline' data:`,
scriptSrc: `'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://maxcdn.bootstrapcdn.com https://code.jquery.com`,
}
}]);
Ya con esto funciona, me basé en la documentación del plugin: https://github.com/nlf/blankie/
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?