Je recherche des modules à ajouter à une application Node/Express qui répondent aux problèmes de sécurité généraux répertoriés ci-dessous:
Merci de votre aide!
Quelques ressources que j'ai trouvées:
Excellent talk (11/2012): http://lanyrd.com/2012/asfws/sxzbm/ (voir diapositives)
Question ServerFault (2011-2012): https://serverfault.com/questions/285123/is-node-js-mature-for-enterprise-security
Article de blog sur le sujet (9/2012): http://codefol.io/posts/29-Why-Rails-and-not-Sinatra-or-Node-js-
Testeur d'exploit: https://code.google.com/p/skipfish/
Module de passeport: https://github.com/jaredhanson/passport
Module EveryAuth: https://github.com/bnoguchi/everyauth
J'ai écrit un article de blog qui donne un excellent point de départ sur Writing Secure Express.js Apps . Il couvre quelques autres choses au-delà du csrf et du casque, comme l'a mentionné zeMirco.
L'autre chose est que vous ne pouvez pas comparer express.js à Rails. Ce sont des pommes et des oranges. Par exemple, aucun ORM n'est fourni avec Express, la mise en œuvre ou l'utilisation d'un module tiers dépend de vous.
Je vais essayer de donner une ventilation de chacune de vos préoccupations.
-Injection Vulnerabilities (JavaScript, SQL, Mongo, HTML)
Encore une fois, ce sont des choses qui ne sont pas intégrées à l'express. La chose la plus proche serait les inquiétudes de XSS concernant l'injection dans les modèles. Les modèles Jade ou EJS qui sont couramment utilisés avec le codage de sortie express <> "'et & par défaut, mais rappelez-vous qu'il y a d'autres contextes comme l'entrée utilisateur en JavaScript ou CSS dont vous devriez vous soucier.
-Session fixation and hijacking
Voir à nouveau le blog ci-dessus, mais Express est basé sur et utilise la plupart des middleware connect l'un d'eux est le middleware de session. La plus grande chose ici est de définir correctement vos drapeaux de cookies.
-Cross-Site Vulnerabilities (Scripting, Request Forgery)
Voir au dessus. Il est également livré avec le middleware express.csrf (). Le billet de blog mentionné montre comment le mettre en œuvre.
-Mass Assignment
Ce n'est pas un problème avec express.js car il n'a aucun concept dans lequel ce type de vulnérable serait applicable, cependant la logique personnalisée que vous écrivez peut être en fait vulnérable à ce problème, donc encore une fois, c'est un problème de vérifier si votre code est vulnérable ou si le module tiers que vous avez utilisé est ...
Une chose à se méfier est bodyParser. Voir http://andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html
Vous devez savoir que si vous spécifiez un gestionnaire d’erreurs passe-partout, vous NE DEVEZ PAS redémarrer le serveur ou faire quoi que ce soit de bloquant dans ce gestionnaire en réponse aux erreurs UTILISATEUR (le 4xx
range) car cela pourrait conduire à une vulnérabilité DOS. Cette vulnérabilité est corrigée automatiquement dans express-error-handler
, et le service s'arrêtera dès qu'il le pourra (lorsque les connexions actives seront vidées ou qu'un délai d'expiration se produit), les redémarrages ne devraient donc pas être un gros problème. L'implémentation de ce comportement a fait une très grande différence dans mes tests d'exploit.
BTW, il n'est PAS sûr d'ignorer simplement toutes les erreurs non gérées. Cela laisserait votre application dans un état non défini, ce qui présente simplement un autre type de vulnérabilité DOS.