Si vous venez de commencer votre développement Web ou votre parcours Node.js, vous ne savez peut-être pas à quel point il est important de sécuriser votre application.
Express.js fournit une solution performante pour créer des applications Web backend, mais il manque de sécurité. Lorsque vous créez une application Web, vous avez besoin de mesures de sécurité adéquates pour protéger les données de vos utilisateurs.
Heureusement, il existe des méthodes que vous pouvez utiliser pour améliorer la sécurité de vos applications Express.js. Ces conseils contribueront tous à renforcer la sécurité de vos applications en utilisant différentes approches.
Configurer une application Express.js
Commencez par configurer une démo Serveur Web Express.js en utilisant npm, le gestionnaire de paquets de nœuds. Créez un dossier de projet localement et modifiez-le dans le répertoire sur votre terminal.
projet express mkdir
cd express-projet
Ensuite, créez un package.json fichier dans le répertoire racine.
npm init -y
Allez-y et installez Express.js.
npm installer express
Enfin, créez un serveur.js fichier dans le répertoire racine de votre dossier de projet et ajoutez le code suivant pour configurer un serveur Web de base.
constante exprimer = exiger("exprimer")
constante app = express()
constante PORT = processus.env. PORT || 5000app.get("/", (req, res) => {
res.json("Bonjour le monde!")
})
app.listen (PORT, () => {
console.enregistrer(`Démarrage du serveur sur http://localhost:${PORT}`)
})
Démarrez le serveur avec cette commande :
nœud serveur.js
Vous êtes maintenant prêt à explorer certaines des mesures que vous pouvez utiliser pour sécuriser votre application Express.js.
1. Sécurisation des applications Express.js à l'aide de Helmet
Casque est un middleware Node.js qui aide à sécuriser les applications côté serveur en définissant divers en-têtes de sécurité HTTP. Ces en-têtes fournissent des mécanismes de défense essentiels contre vulnérabilités de sécurité courantes du backend, tels que les scripts intersites (XSS), la falsification de requêtes intersites (CSRF) et bien d'autres.
Express.js ne configure pas les en-têtes de sécurité HTTP par défaut, laissant une faille de sécurité potentielle qui expose des en-têtes potentiellement sensibles. En utilisant ces informations, des acteurs malveillants peuvent être en mesure d'obtenir un accès non autorisé ou de perturber votre application.
Le casque agit comme un bouclier vital, garantissant que les réponses HTTP de l'application adoptent les mesures de sécurité nécessaires, réduisant considérablement la surface d'attaque potentielle.
Explorer la sécurité des applications Express.js sans casque
Avec le serveur en cours d'exécution, examinez les en-têtes de l'application. Allez-y et faire des requêtes HTTP à l'API en utilisant Postman ou tout autre client qui affiche des en-têtes de réponse. La plupart des navigateurs incluent un ensemble d'outils de développement qui vous permettront de le faire.
Lorsque vous envoyez des requêtes au point de terminaison d'accueil, vous devriez observer des résultats similaires dans le En-têtes section de la réponse dans Postman.
Remarquez le X-Powered-Par entête. Généralement, les technologies backend utilisent cet en-tête pour indiquer le framework ou un autre logiciel qui alimente l'application Web. Vous devez généralement retirer le X-Powered-Par en-tête dans un environnement de production.
Ce faisant, vous empêcherez les attaquants potentiels d'obtenir des informations précieuses qu'ils pourraient utiliser pour exploiter les vulnérabilités connues associées à votre pile technologique.
Tester la configuration de sécurité du serveur Express.js
Pour évaluer l'état de sécurité de vos applications, nous utiliserons le En-têtes de sécurité outil en ligne. Cette application est spécialement conçue pour évaluer la configuration de sécurité des en-têtes HTTP pour les applications côté client et côté serveur.
Tout d'abord, vous devez rendre votre serveur Express.js local accessible sur Internet. Il existe deux approches possibles pour y parvenir: déployer votre application Express.js sur un serveur cloud ou utiliser ngrok.
Pour l'utiliser, télécharger le ngrok zip, extrayez l'exécutable et lancez l'application. Ensuite, exécutez la commande suivante pour héberger votre serveur Express.js local avec ngrok.
ngrok http 5000
ngrok affichera quelques brèves informations qui ressemblent à ceci :
Copiez le fourni URL de transfert et collez-le dans le En-têtes de sécurité' et cliquez sur le Analyse bouton.
Une fois l'évaluation de sécurité terminée, vous devriez recevoir un rapport similaire.
D'après le rapport, il est évident que le serveur Express.js a reçu un mauvais F grade. Cette faible note est le résultat de l'absence d'en-têtes de sécurité HTTP essentiels dans la configuration du serveur - leur absence laisse le serveur vulnérable aux risques de sécurité potentiels.
Intégrer le casque dans l'application Express.js
Maintenant, allez-y et intégrez Helmet dans votre application Express.js. Exécutez la commande ci-dessous pour installer la dépendance.
npm installer un casque
Mettez à jour votre fichier server.js et importez Helmet.
constante casque = exiger("casque")
Maintenant, ajoutez Helmet à votre application Express.js.
app.use (casque())
Enfin, lancez le serveur de développement, copiez le lien de transfert à partir de de ngrok terminal, et collez-le dans le En-tête de sécurité champ de saisie pour réanalyser le serveur local. Une fois la nouvelle analyse terminée, vous devriez voir des résultats similaires à ceux-ci :
Après avoir intégré Helmet, Express.js inclut plusieurs en-têtes de sécurité essentiels dans la réponse HTTP. Cette amélioration substantielle a entraîné la transition de l'application Express.js vers une UN grade.
Bien que Helmet ne soit pas une solution infaillible, il améliore considérablement la sécurité globale de votre application Express.js.
2. Sécurisation des applications Express.js à l'aide de Joi, une bibliothèque de validation d'entrée
Joi est une bibliothèque de validation des entrées qui aide à sécuriser les applications Express.js en fournissant un moyen pratique de valider et de nettoyer les entrées des utilisateurs. En définissant des schémas de validation à l'aide de Joi, vous pouvez spécifier la structure, les types de données et les contraintes attendus pour les données entrantes.
Joi valide l'entrée par rapport au schéma défini, en s'assurant qu'elle répond aux critères spécifiés. Cela permet d'éviter les vulnérabilités de sécurité courantes telles que l'injection de données, les scripts intersites (XSS) et d'autres attaques de manipulation de données.
Suivez ces étapes pour intégrer Joi dans votre application.
- Installez Joi.
npm installer joi
- Importez Joi dans votre fichier server.js.
constante Joï = exiger('joi');
- Créez un schéma de validation des données Joi qui définit la structure attendue et toutes les contraintes pour les données d'entrée.
constante schema = Joi.object({
email: Joi.string().email().required(),
mot de passe: Joi.string().min(5).max(16).requis()
}); - Validez toutes les données entrantes à l'aide du schéma défini.
constante { erreur, valeur } = schema.validate (req.body);
si (erreur) {
// Gérer l'erreur de validation
// Par exemple, renvoie une réponse d'erreur
retour res.statut(400).json({ erreur: détails de l'erreur[0].message });
}
En mettant en œuvre ces étapes, vous pouvez tirer parti des capacités de validation des entrées de Joi pour sécuriser vos applications Express.js. Cela garantira que les données entrantes respectent les contraintes définies, empêchant ainsi les menaces de sécurité potentielles de manipulation des données.
3. Sécurisation des applications Express.js à l'aide du mécanisme CORS
Cross-Origin Resource Sharing (CORS) est un mécanisme utilisé par les serveurs Web pour gérer les origines (clients ou autres applications côté serveur) pouvant accéder à leurs ressources protégées. Ce mécanisme permet de se protéger contre les demandes d'origine croisée non autorisées, en prévenant des problèmes tels que les attaques de script intersite (XSS).
Pour sécuriser les applications Express.js à l'aide du CORS, procédez comme suit :
- Installez le package CORS.
npm installer cors
- Exiger et utiliser le middleware CORS dans le fichier server.js.
constante cors = exiger('cors');
app.use (cors());
En intégrant le middleware CORS dans votre application Express.js, vous activez le partage de ressources cross-origin. Cela garantit que vous atténuez les risques de sécurité potentiels liés aux demandes d'origine croisée.
Sécuriser facilement les applications côté serveur
Vous pouvez utiliser une ou plusieurs de ces mesures essentielles pour améliorer la sécurité de vos applications Express.js.
Bien qu'il existe de nombreuses mesures et approches disponibles pour protéger vos applications côté serveur, l'essentiel est que vous devez donner la priorité à la sécurité tout au long du cycle de vie du développement. Il s'agit d'une tâche qui commence à la phase de conception et doit se poursuivre tout au long du déploiement.