Vraag JWT: Wat is een goede geheime sleutel en hoe kan ik deze opslaan in een Node.js / Express-app?


Ten eerste, wat is een goede methode om een ​​geheime sleutel te genereren? Ik zou veel willekeurige toetsen op mijn toetsenbord moeten intoetsen om er een te genereren, maar daar moet een betere oplossing voor zijn. Verklaar de manier om een ​​zeer goede sleutel te genereren.

Ten tweede, wat is een goede manier om de sleutel op te slaan? Ik zou de sleutel in mijn toepassingsconfiguratie kunnen schrijven, maar dat betekent dat een compromis van de broncode het hele systeem in gevaar brengt. Wat is een goed middel om de geheime sleutel op te slaan in een Node.js Express-app?


33
2018-05-06 23:51


oorsprong


antwoorden:


Om een ​​geheim programmatisch te genereren, zou je knooppunten kunnen gebruiken 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);
});

Wat betreft het opslaan van dit, je hebt absoluut gelijk, je moet zeker geen geheimen opslaan in je bronbeheer. Een betere manier zou zijn om dergelijke gevoelige informatie uit omgevingsvariabelen te laden, bijvoorbeeld process.env.MY_SECRET.

Een ander minder gebruikelijk patroon dat ik heb gezien, is om geheimen te laden van een bestand dat apart van je code is opgeslagen. U kunt uw node-app laten zoeken naar een JSON-bestand ~/.myapp/secrets.json bijvoorbeeld.


23
2018-05-07 00:54