¿Es seguro cifrar y guardar el secreto de API de terceros de los usuarios en la base de datos?

3

Quiero almacenar el secreto de la API de terceros (como AWS) de mis usuarios en la base de datos. La fuga de los cuales puede conducir a una pérdida potencial para mis usuarios. Debe mantenerse confidencial.

Entonces, ¿cómo puedo asegurar sus datos en la plataforma NodeJS? Estoy pensando en cifrar y almacenar en la tienda la clave secreta para que no sea directamente visible para los intrusos.

¿Alguna sugerencia sobre cómo se puede mantener más seguridad?

var crypto = require('crypto');
var assert = require('assert');

var algorithm = 'aes256'; // or any other algorithm supported by OpenSSL
var key = 'password';
var text = 'I love kittens';

var cipher = crypto.createCipher(algorithm, key);  
var encrypted = cipher.update(text, 'utf8', 'hex') + cipher.final('hex');

var decipher = crypto.createDecipher(algorithm, key);
var decrypted = decipher.update(encrypted, 'hex', 'utf8') + 
decipher.final('utf8');

console.log(encrypted);
console.log(decrypted);

assert.equal(decrypted, text);
    
pregunta Sowmay Jain 07.06.2017 - 16:38
fuente

1 respuesta

2

Siempre es mejor si puedes usar un sistema que no requiera almacenar secretos reversibles. Pero en algunos casos, se requiere.

En lugar de confiar en usted mismo para corregir la construcción criptográfica, es mejor confiar en una biblioteca de terceros revisada y este es precisamente el nicho NaCl fue diseñado para llenarse. Hay muchas opciones para usarlo, de una forma u otra, en JavaScript:

La API exacta diferirá según la biblioteca que elija, pero en general lo que está buscando se llama caja secreta .

Un enfoque alternativo es evitar el manejo del almacenamiento por completo, incluso subcontratándolo. Hay una serie de productos para almacenar secretos, incluidos los dispositivos de hardware . Si está utilizando una nube pública, es probable que tenga un servicio ( aquí es Amazon). Y Hashicorp's Vault puede ejecutarse en cualquier lugar y le da mucho control.

    
respondido por el Xiong Chiamiov 07.06.2017 - 17:38
fuente

Lea otras preguntas en las etiquetas