Я действительно изо всех сил пытаюсь скрыть свои ключи.Где я должен хранить свои секретные ключи для моего приложения Node.js?
Два ключа, которые мне нужно скрыть, - secrets.crypto и secrets.jwt ... Я планирую разместить мое приложение на AWS, используя Elastic Beanstalk.
Также я не знаю, где бы я поместил ключи для доступа к таким вещам, как мой Dynamodb и мой ведро S3.
exports.generateToken = (type, user) => {
if (!_.isString(type)) {
return undefined;
}
try {
//Turn the json object of the current user's id and the type of token into a string
var stringData = JSON.stringify({
_id: user._id,
type: type
});
//Take the json string and encrypt it with a secret then turn it back into a string
var encryptedData = cryptojs.AES.encrypt(stringData, secrets.crypto).toString();
//Take the encryptedData and turn it into a token with a secret
var token = jwt.sign({
token: encryptedData
}, secrets.jwt);
return token;
} catch(e) {
return undefined;
}
};
Это также «безопасный путь». – ConnorB
. Вызов 'eb setenv' будет отправлять имя и значение ключа по SSL-соединению с AWS API, поэтому это безопасный способ установить значение. Я также могу сделать то же самое с помощью веб-консоли AWS. Он «безопасен», пока вы ограничиваете доступ к своей учетной записи AWS. Если вы хотите больше безопасности вокруг этих значений, вы можете изучить использование службы управления ключами AWS (KMS). Вы должны были бы использовать некоторую поддержку для использования этой услуги в своем приложении, хотя она не была тесно интегрирована с Elastic Beanstalk. –