La seguridad es un tema de suma importancia en la actualidad, si has llegado a este práctico tutorial seguramente être porque te preocupa el nivel de seguridad y fiabilidad de tus programas. Sigue leyendo para que aprendas a aumentar la seguridad de tu propia Appli.
Commençons et sécurisons notre application avec Node.js en utilisant un codage, des outils et des habitudes de trading appropriés!
1. Application de formulaires de cryptage sécurisé
-
Premièrement: évitez d'utiliser évaluer
Vous ne connaissez peut-être pas ces informations, mais évaluer
puede abrir tu aplicación para ataques de inyección de código. Trata de no usarlo, pero si tienes que hacerlo, nunca inyectes entradas de Nom d'utilisateur no validadas en évaluer
.
Eval n'est pas le seul à éviter pour cela: au fond, chacune des expressions suivantes utilise eval:
setInterval (Chaîne, 2)
setTimeout (Chaîne, 2)
nouvelle fonction (chaîne)
-
Deuxièmement: essayez de toujours utiliser l'instruction 'utiliser strict'
Avec 'utiliser strict' tu puedes optar por usar una «variable» restringida de JavaScript. Esta variable, elimina algunos errores silenciosos y los desecha todo el tiempo.
'use strict' delete Object.prototype // TypeError var obj = {a: 1, a: 2} // erreur de syntaxe
-
Troisièmement: essayez de gérer les erreurs avec soin extrême
Au cours de différents scénarios d'erreur, votre application peut perdre des données sensibles sur l'infrastructure sous-jacente, telles que: X-Powered-By: Express
.
Les traces de pile ne sont pas traitées comme des vulnérabilités en elles-mêmes, mais elles révèlent souvent des informations susceptibles d'intéresser un attaquant. Fournir des informations de débogage suite à des opérations qui échouent est considéré comme une mauvaise pratique. Vous devez toujours les enregistrer, mais ne jamais les montrer aux utilisateurs.
-
Quatrièmement: essayez de faire un analyse statique de votre base de données
L'analyse statique du code de la base de données de votre application peut détecter de nombreuses erreurs. Pour cela, nous vous suggérons d'utiliser ESLint avec le style de code standard.
Exécution de vos services en production en toute sécurité
L'utilisation du style de code approprié ne suffit pas pour protéger efficacement les applications Node.js.Vous devez également faire attention à la manière dont vous exécutez vos services en production.
-
Cinquième: évitez d'exécuter vos processus avec les droits de superutilisateur
Malheureusement, nous constatons que ce cas se produit souvent: les développeurs exécutent leur application Node.js avec des droits sur Super utilisateurcomme ils veulent qu'il soit entendu sur le port 80 ou 443.
Esto está muy mal. En el caso de un error o bug, su proceso puede hacer caer todo el sistema, ya que tiene credenciales para hacer cualquier cosa.
En lugar de esto, lo que puedes hacer es configurar un serveur o proxy HTTP para reenviar las solicitudes. Puede ser nginx o Apache.
-
Sixième: configurer les en-têtes HTTP requis
Votre site doit définir certains en-têtes HTTP liés à la sécurité. Ces en-têtes sont:
- Sécurité de transport stricte: este refuerza las conexiones seguras (HTTP sobre SSL/TLS) al servidor.
- Options de X-Frame: vous offre une protection contre le détournement de clic
- Protection X-XSS: puede habilitar el filtro XSS (cross-site scripting) integrado en los navigateurs la toile más recientes.
- Options de type de contenu X: este evita que los navegadores olfateen una respuesta alejada del type de contenu declarado.
- La política de seguridad de Contenu previene una amplia gama de ataques, incluyendo secuencias de comandos entre sitios y otras inyecciones entre sitios.
Dans Node.js, il est facile de les configurer à l'aide du module Casque:
var express = require ('express') var casque = require ('casque') var app = express () app.use (casque ())
Le casque est également disponible pour Koa: casque koa.
-
Septième: effectuer une bonne gestion de session
La siguiente lista de marcas debe ser establecida para cada cookie:
- sécurise: cette attribut le dice al le navigateur que sólo envíe la cookie si la petición se está enviando a través de HTTPS.
- HttpOnlyly: este atributo se utiliza para ayudar a prevenir ataques tales como scripts cruzados, ya que no permite el acceso a la cookie a través de JavaScript.
-
Huitième: Création de environnement d'application des cookies
- domaine: este atributo se utiliza para comparar con el domaine del servidor en el que se está solicitando la URL. Si el dominio coincide o es un sous-domaine, el atributo de ruta se comprobará a continuación.
- chemin: En plus du domaine, vous pouvez spécifier le chemin d'URL pour lequel le cookie est valide. Si le domaine et le chemin correspondent, le cookie sera envoyé sur demande.
- expire: Cet attribut est utilisé pour définir des cookies persistants car le cookie n'expire pas tant que la date définie n'est pas dépassée.
Dans Node.js, vous pouvez facilement créer ce cookie à l'aide du package de cookies. Encore une fois, c'est assez bas, donc vous finirez probablement par utiliser un wrapper, comme la session de cookies.
var cookieSession = require ('cookie-session') var express = require ('express') var app = express () app.use (cookieSession ({nom: 'session', clés: [process.env.COOKIE_KEY1, process. env.COOKIE_KEY2]})) app.use (function (req, res, next) {var n = req.session.views || 0 req.session.views = n ++ res.end (n + 'vues') }) app.listen (3000)
Considérez les outils à utiliser
Félicitations, vous êtes presque à la fin de l'article! Si vous avez suivi ce didacticiel et effectué les étapes ci-dessus à fond et à la lettre, vous n'avez qu'un seul domaine à couvrir en termes de sécurité Node.js. Plongeons-nous dans l'utilisation des bons outils pour rechercher les vulnérabilités des modules!
-
Neuvième: recherche vulnérabilités avec Retire.js
le objectif de Remove.js est de vous aider à détecter l'utilisation de versions de modules présentant des vulnérabilités connues.
Installez simplement avec:
npm install -g supprimer
Après cela, exécutez-le avec la commande retirer recherchera des vulnérabilités dans le répertoire node_modules. (Notez également que remove.js fonctionne non seulement avec les modules de nœuds mais aussi avec les bibliothèques frontales).
-
Dixième: auditez vos modules avec le Plateforme de sécurité Node CLI
nsp
est l'interface de ligne de commande principale de la plate-forme de sécurité Node. Vous permet d'auditer un fichier package.json ou npm-shrinkwrap.json contra la API del NSP para comprobar si hay módulos vulnerables.
npm install nsp --global # Depuis le répertoire de votre projet nsp check
La sécurité de Node.js n'est pas un gros problème après tout, non? J'espère que vous avez trouvé ces règles utiles et nécessaires pour sécuriser vos applications Node.js, et que vous les suivrez à l'avenir car la sécurité fait partie de votre travail. Toutes nos félicitations!