Implementando Csurf Middleware en Node.js

El módulo Csurf en Node.js evita el ataque de falsificación de requests entre sitios (CSRF) en una aplicación. Al usar este módulo, cuando un navegador muestra una página del servidor, envía una string generada aleatoriamente como un token CSRF . Por lo tanto, cuando se realiza la solicitud POST, enviará el token CSRF aleatorio como una cookie. El token enviado será diferente para cada solicitud ya que se generan de forma aleatoria.
requisitos previos 
 

  • Un IDE de su elección
  • NodeJs y NPM instalados y configurados en su sistema.
  • Conocimientos básicos de módulos de Node.js y JavaScript incorporado (ejs).

Instalación: 
 

  1. Primero, necesitamos inicializar nuestra aplicación con el archivo package.json . Por lo tanto, escriba el siguiente comando en la terminal: 
     
npm init
  1.  
  2. Después, se crea el paquete.json , es hora de instalar nuestras dependencias. Por lo tanto, instale las dependencias requeridas con el siguiente comando: 
     
npm install body-parser cookie-parser express csurf --save
  1. Cookie-parser se utiliza para analizar las cookies entrantes. Body-parser se utiliza para analizar los datos del formulario entrante que crearemos en un archivo HTML. 
     
  2. Cree un archivo y llámelo app.js y escriba el siguiente código para solicitar el módulo: 
    Nombre de archivo: app.js
     

javascript

const express = require('express');
const csrf = require('csurf');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
  1. Aquí, csrf actuará como un middleware para generar y validar cookies CSRF. Este middleware agregará una función para generar cookies. Esta función se pasará a las requests a través de un campo de formulario oculto. Esta cookie creada será luego validada cuando los usuarios envíen requests. El middleware rellena req.csrfToken()
     
  2. Ahora, después de haber requerido todos los módulos, escribamos el código completo como se muestra a continuación: 
    Nombre de archivo: app.js 
     

javascript

const express = require('express');
const csrf = require('csurf');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
  
var csrfProtection = csrf({ cookie: true });
var parseForm = bodyParser.urlencoded({ extended: false });
  
var app = express();
app.set('view engine','ejs')
  
app.use(cookieParser());
  
app.get('/form', csrfProtection, function (req, res) {
  // pass the csrfToken to the view
  res.render('login', { csrfToken: req.csrfToken() });
});
  
app.post('/process', parseForm,
      csrfProtection, function (req, res) {
  res.send('Successfully Validated!!');
});
  
app.listen(3000, (err) => {
   if (err) console.log(err);
   console.log('Server Running');
});
  1. En el código anterior, después de importar los módulos, configuramos los middlewares de ruta y pasamos el método de validación como cookie en lugar de token . Body-parser se utiliza para analizar los datos provenientes del formulario. Dado que la cookie se utiliza como método de validación, se utiliza el analizador de cookies . Ahora, en la solicitud GET , estamos representando el valor de la cookie pasada a la vista. En la solicitud POST , primero validamos la cookie y, si se valida, enviamos un mensaje. 
     
  2. Ahora, cree una carpeta y nómbrela como vista y cree un archivo y asígnele el nombre login.ejs y escriba el siguiente código en él:
     

html

<html>
<head>
      <title>Csurf Middleware</title>
</head>
<body>
    <form action="process" method="POST">
       <input type="hidden" name="_csrf"
                value="<%= csrfToken %>">
       <input type="text" name="myname">
       <input type="submit" value="Submit">
    </form>
</body>
</html>
  1.  

El ejemplo de código anterior se ejecutará como una aplicación simple, pero habrá una medida de seguridad adicional adicional para evitar CSRF. 
Pasos para ejecutar este programa: 
 

  1. Asegúrese de haber instalado el módulo express, csurf, cookie-parser, body-parser con el siguiente comando: 
     
npm install express
npm install express
npm install csurf
npm install cookie-parser
npm install body-parser
  1. Ejecute el archivo index.js con el siguiente comando: 
     
node index.js
  1. Abra el navegador y vaya a http://localhost:3000/form , luego verá el formulario con un campo de entrada como se muestra a continuación: 
     

  1.  
  2. Después de enviar el formulario, verá el siguiente resultado: 
     
Successfully Validated!!
  1.  

Conclusión: Csurf es un módulo de Node muy útil para prevenir ataques de falsificación de requests entre sitios .
 

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 *