JWT: Qu'est-ce qu'une bonne clé secrète, et comment la stocker dans un noeud.js / Express app?

tout d'abord, quelle est la bonne méthode pour générer une clé secrète? Je devrais pointer beaucoup de touches aléatoires sur mon clavier pour en générer une, mais il doit y avoir une meilleure solution. Expliquer la façon de générer une très bonne clé.

Deuxièmement, Quelle est la bonne façon de stocker la clé? Je pourrais écrire la clé dans la configuration de mes applications, mais cela signifie qu'un compromis du code source compromettra l'ensemble du système. Ce qui est bon moyen de stocker la clé secrète dans un Nœud.js Express app?

34
demandé sur Sam 2015-05-07 02:51:44

1 réponses

pour générer un programme secret, vous pouvez utiliser crypto.randomBytes()

var crypto = require('crypto');
var jwt = require('jsonwebtoken');

crypto.randomBytes(256, function(ex, buf) {
  if (ex) throw ex;
  var token = jwt.sign({foo: 'bar'}, buf);
  var decoded = jwt.verify(token, buf);
});

pour ce qui est de stocker ceci, vous avez absolument raison, vous ne devriez certainement pas stocker des secrets dans votre contrôle source. Une meilleure façon serait de charger de telles informations sensibles à partir des variables d'environnement, par exemple process.env.MY_SECRET.

un autre modèle moins courant que j'ai vu est de charger des secrets d'un fichier stocké séparé de votre code. Vous pouvez demander à votre application node de rechercher un JSON file in ~/.myapp/secrets.json par exemple.

25
répondu Andrew Lavers 2015-05-07 01:09:15