Seguridad básica - Asegurando el servidor contra XSS

Clase 33 de 35Curso de Node.js con Hapi

Resumen

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.