Node.js Protección de aplicaciones con Helmet.js

Helmet.js es un módulo de Node.js que ayuda a proteger los encabezados HTTP. Se implementa en aplicaciones express. Por lo tanto, podemos decir que helmet.js ayuda a asegurar aplicaciones express. Configura varios encabezados HTTP para evitar ataques como Cross-Site-Scripting (XSS), clickjacking, etc.

Por qué es importante la seguridad de los encabezados HTTP: A veces, los desarrolladores ignoran los encabezados HTTP. Dado que los encabezados HTTP pueden filtrar información confidencial sobre la aplicación, es importante utilizar los encabezados de forma segura.

Los módulos de Node incluidos en Helmet.js son: Helmet.js viene con más módulos integrados para aumentar la seguridad de la aplicación Express.

  • Content-Security-Policy: Configura la Política de Seguridad.
  • Expect-CT: Se utiliza para el manejo de Transparencia de Certificados.
  • X-DNS-Prefetch-Control: se utiliza para controlar la obtención de DNS del navegador.
  • X-Frame-Options: Se utiliza para evitar el ClickJacking.
  • X-Powered-By: se utiliza para eliminar el encabezado X-Powered-By. El encabezado X-Powered-By filtra la versión del servidor y su proveedor.
  • Public-Key-Pins: se utiliza para la fijación de claves públicas HTTP.
  • Strict-Transport-Security: se utiliza para la política de transporte estricto de HTTP.
  • X-Download-Options: se restringe a varias opciones de descarga.
  • Control de caché: se utiliza para deshabilitar el almacenamiento en caché del lado del cliente.
  • X-Content-Type-Options: Se utiliza para prevenir el ataque Sniffing.
  • Referrer-Policy: se utiliza para ocultar el encabezado de referencia.
  • X-XSS-Protection: Se utiliza para agregar protección a los ataques XSS.

Cómo inspeccionar el encabezado HTTP: para inspeccionar el encabezado, primero haga clic con el botón derecho en la página que desea inspeccionar. Ahora, haga clic en inspeccionar elemento . Después de eso, abra la pestaña Red . La pestaña de red se verá así:

Al principio estará vacía. En la pestaña de red, se mostrarán todas las requests HTTP realizadas por el navegador.

Requisitos previos:

  1. Un IDE de su elección.
  2. Node.js instalado en su sistema.
  3. Conocimiento de Node.js y aplicaciones express.

Configuración de una aplicación express básica:

  1. Primero inicialice la aplicación con el archivo package.json . Escribe el siguiente comando:
    npm init
  2. Instale el módulo express usando el siguiente comando:
    npm install express --save

    A continuación se muestra nuestro archivo package.json:

    {
      "name": "HelmetJs",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "Pranjal Srivastava",
      "license": "ISC",
      "dependencies": {
        "express": "^4.17.1",
      }
    }
    
  3. Crea un archivo en el que escribiremos nuestro código javascript. Por ejemplo , app.js. Puedes nombrar tu archivo como quieras. Ahora, escriba el siguiente código para configurar el servidor:

    const express = require('express');
    const app = express();
      
    app.get('/', (req, res) => {
        res.send("This is the Demo page for"
           + " setting up express server !")
    });
      
    app.listen(3000, (err) => {
        if (err) { console.log(err); }
        else { console.log('Server started "
            + "at http://localhost:3000'); }
    });
  4. Ejecute el archivo app.js con el siguiente comando:
    node app.js

    La salida del comando anterior se muestra a continuación:

    Server started at http://localhost:3000
  5. Abra el navegador y vaya a http://localhost:3000 . Abra nuevamente la pestaña Red y allí verá la lista de requests realizadas por el navegador. Seleccione las requests de localhost y verá la lista de encabezados de respuesta como esta:
    HTTP/1.1 304 Not Modified
    X-Powered-By: Express
    ETag: W/"35-QqeUaYjSJ35gtyT3DcgtpQlitTU"
    Date: Thu, 04 Jun 2020 15:55:00 GMT
    Connection: keep-alive
    

Configuración e implementación de Helmet.js en una aplicación express:

  1. Para instalar el módulo helmet.js , escriba el siguiente comando:
    npm install helmet --save
  2. En el archivo app.js , escriba el siguiente código para utilizar el módulo de casco:

    const express = require('express');
    const helmet = require('helmet');
    const app = express();
      
    app.use(helmet());
      
    app.get('/', (req, res) => {
        res.send("This is the Demo page for"
            + " setting up express server !")
    });
      
    app.listen(3000, (err) => {
        if (err) { console.log(err); }
        else { console.log('Server started "
            + "at http://localhost:3000'); }
    });
  3. Inicie el servidor con el siguiente comando:
    node app.js
  4. Abra la pestaña Red haciendo clic en Inspeccionar elemento. Haga clic en localhost y notará un conjunto adicional de encabezados en respuesta. Los encabezados son los siguientes:
    HTTP/1.1 304 Not Modified
    X-DNS-Prefetch-Control: off
    X-Frame-Options: SAMEORIGIN
    Strict-Transport-Security: max-age=15552000; includeSubDomains
    X-Download-Options: noopen
    X-Content-Type-Options: nosniff
    X-XSS-Protection: 1; mode=block
    ETag: W/"35-QqeUaYjSJ35gtyT3DcgtpQlitTU"
    Date: Thu, 04 Jun 2020 16:11:37 GMT
    Connection: keep-alive
    

    Aquí, nuestro módulo helmet.js aplica el nuevo conjunto de encabezados . Estos encabezados se agregan para un nivel adicional de seguridad.

Conclusión: el módulo Helmet.js es muy útil para los desarrolladores de NodeJs ya que agrega seguridad a las aplicaciones express. En este tutorial, aprendimos sobre helmet.js y vimos su implementación en una aplicación express básica.

Publicación traducida automáticamente

Artículo escrito por pranjal_srivastava y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *