L'utilisation de packages de sécurité comme Helmet peut grandement améliorer la sécurité de votre application Node.js/Express.js. Helmet est en fait une collection de plusieurs middlewares plus petits qui configurent les en-têtes HTTP liés à la sécurité. Voici comment vous pouvez utiliser Helmet et d'autres packages pour renforcer la sécurité :

Installation de Helmet

Pour commencer, installez Helmet dans votre projet Node.js avec npm :

npm install helmet

Configuration de Helmet

Ensuite, incluez Helmet dans votre application Express.js :

const helmet = require('helmet');
const app = express();

app.use(helmet());

 

Cela ajoutera les middlewares Helmet par défaut qui incluent des configurations pour :

  • Content-Security-Policy pour prévenir les attaques de type cross-site scripting (XSS) et autres injections de code.
  • X-DNS-Prefetch-Control pour désactiver le DNS prefetching.
  • Expect-CT pour vérifier que les certificats TLS sont conformes.
  • X-Frame-Options pour protéger contre les clickjacking.
  • Strict-Transport-Security pour forcer les connexions sécurisées (HTTPS).
  • X-Download-Options pour prévenir le téléchargement de certains types de fichiers dans IE8+.
  • X-Content-Type-Options pour empêcher les navigateurs de tenter de deviner (sniff) les types MIME.
  • Referrer-Policy pour contrôler les informations de l'en-tête Referer.
  • X-Permitted-Cross-Domain-Policies pour contrôler la gestion des fichiers cross-domain.

Personnalisation de Helmet

Helmet peut être personnalisé selon les besoins spécifiques de votre application. Par exemple, si vous souhaitez définir des directives spécifiques pour le Content-Security-Policy, vous pouvez le faire comme ceci :

app.use(
  helmet.contentSecurityPolicy({
    directives: {
      defaultSrc: ["'self'"],
      scriptSrc: ["'self'", "trusted-scripts.com"],
      objectSrc: ["'none'"],
      upgradeInsecureRequests: [],
    },
  })
);

 

Autres Packages de Sécurité

Outre Helmet, il existe d'autres packages que vous pouvez utiliser pour renforcer la sécurité de votre application :

  • cors: pour activer et configurer les CORS (Cross-Origin Resource Sharing).

    npm install cors 
    const cors = require('cors');
    app.use(cors());
    
  • express-rate-limit: pour limiter le nombre de requêtes qu'un utilisateur peut faire à une API dans un certain laps de temps.

    npm install express-rate-limit 
    const rateLimit = require('express-rate-limit');
    const limiter = rateLimit({
      windowMs: 15 * 60 * 1000, // 15 minutes
      max: 100 // limite chaque IP à 100 requêtes par fenêtre (ici, par 15 minutes)
    });
    app.use(limiter);
    
  • csurf: pour la protection contre les attaques CSRF (Cross-Site Request Forgery).

    npm install csurf
    const csrf = require('csurf');
    const csrfProtection = csrf({ cookie: true });
    app.use(csrfProtection);
    
  • express-mongo-sanitize: pour prévenir les injections NoSQL en nettoyant les données soumises des clés d'objet qui commencent par un $ ou contiennent un ..

    npm install express-mongo-sanitize
    const mongoSanitize = require('express-mongo-sanitize');
    app.use(mongoSanitize());
    
  • hpp: pour protéger contre les attaques de pollution des paramètres HTTP.

    npm install hpp
    const hpp = require('hpp');
    app.use(hpp());
    

En combinant Helmet avec d'autres middlewares de sécurité, vous pouvez créer une couche de défense robuste contre de nombreuses attaques web courantes. Il est important de noter que la sécurité est un processus itératif et doit être régulièrement réévaluée et mise à jour pour se protéger contre les nouvelles vulnérabilités et menaces.

Modifié le: jeudi 2 novembre 2023, 08:59