将数据安全地存储在Node CLI应用程序中

我目前正在编写一个NodeJS命令行应用程序。 该应用程序进行API调用,并返回一些数据给用户。 鉴于这是一个公共API,用户需要一个API令牌。 这个CLI将通过npm i -g super-cool-api-cli在用户的机器上全局安装。

用户第一次运行CLI时,系统会提示input令牌,然后将其存储起来,以便随后每次运行令牌时都不需要input令牌。我也为用户提供了一种重置它的方法。 我将它存储在我的CLI模块的实际目录中,正如所述,它是全局安装的,它看起来像这样:

 fs.writeFile( __dirname+'/.token.json', JSON.stringify( { "token": token }, null, 2 ), 'utf8', (e)=>{ // error handling and whatever }); 

我将文件命名为.token.json ,使用一个点来默认隐藏文件。

我想我问的是,如果在NodeJS命令行应用程序中存储更好/更安全的方式来存储敏感信息,那么您将运行多次。 我想过使用像环境variables这样的东西,但似乎在这个过程结束时会过期。

安全考虑是我有点缺乏的一项技能,但是大大希望了解更多,所以提前谢谢你的提示。

我认为最好是使用操作系统提供的凭证存储function来做这种事情,当然假设每个用户都有自己的账户。 我知道的唯一一个处理node-keytar的 NPM包。

您可以将您的令牌存储在sqlite中,并为sqlite.db文件设置用户名/密码,这里是sqlite的绑定https://github.com/mapbox/node-sqlite3