我目前正在编写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
});
我将文件命名为.token.json
,使用点至少默认隐藏文件。
我想我要问的是,如果在NodeJS命令行应用程序中存储更好/更安全的敏感信息,那么您将运行多次。我想过使用environment variables之类的东西,但它们似乎在过程结束时到期。
安全方面的考虑是我缺乏的一项技能,但非常希望了解更多信息,所以请提前感谢您的提示。
答案 0 :(得分:4)
我认为最好使用操作系统提供的凭据存储设施来做这种事情,当然假设每个用户在计算机上都有自己的帐户。我所知道的唯一一个处理node-keytar的NPM包。
答案 1 :(得分:1)
您可以将您的令牌存储在sqlite中,并为sqlite.db文件设置用户名/密码,这里是sqlite https://github.com/mapbox/node-sqlite3
答案 2 :(得分:0)
.ssh
目录是存储密钥(例如密钥)的半常规位置。
答案 3 :(得分:0)
存储此类令牌的标准位置在用户的<div class="column" style="max-width: 25%;">
文件中(请参见specifications here)。 Heroku为此example做这件事。
该标准的一个很好的结果是,存在用于读取/写入此文件的库(例如netrc-rw)。