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

Dav*_*nny 5 javascript api token node.js npm

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

用户第一次运行CLI时会提示他们输入令牌,然后我将其存储,以便随后每次运行它时都不需要将其放入.我已经为用户提供了重置它的方法.我将它存储在我的CLI模块的实际目录中,如上所述,它是全局安装的,它看起来像这样:

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

我命名该文件.token.json,使用点至少默认隐藏文件.

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

安全考虑是我有点缺乏的技能,但非常希望了解更多,所以提前感谢您的提示.

Vad*_*gon 7

我认为最好将操作系统提供的凭证存储设施用于此类事情,当然假设每个用户在机器上都有自己的帐户。我所知道的唯一处理它的 NPM 包是node-keytar


Eud*_*ran 1

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