在前端开发中,我们需要管理项目的敏感信息,比如 API key,数据库密码等等。这些信息不应该被直接存储在代码中或公开版本控制系统中。一个好的解决方案是使用独立的存储库或环境变量。 npm 包 secrets-handler 可以传递这些敏感数据并让你的应用程序安全地使用它们。
安装
在终端中运行以下命令以安装 secrets-handler:
npm install secrets-handler
使用
- 在应用程序中引入 secrets-handler 模块:
const secretsHandler = require('secrets-handler');
- 在你的项目中创建一个名为 secrets.yml 的文件,其中包含你的敏感数据,例如:
secrets: api_key: your_private_api_key db_password: your_private_db_password
- 在 your-app.js 文件中加载 secrets.yml 文件,并传递 secrets。可以使用 promises 或回调函数。
通过 promise:
secretsHandler.loadSecrets().then((secrets) => { console.log(secrets.api_key); console.log(secrets.db_password); });
通过回调函数:
secretsHandler.loadSecrets((error, secrets) => { console.log(secrets.api_key); console.log(secrets.db_password); });
深入
secrets-handler 提供了一个便捷的方式来管理敏感数据,但是如果处理不当,它仍然会造成安全漏洞。以下是一些建议:
不要将 secrets.yml 文件提交到版本控制
将 secrets.yml 文件提交到版本控制可能会导致你的敏感数据泄露。将它保持在本地,或者使用其他适当的方法(如加密)以保护它。
不要在日志中输出 secrets
当你使用 secrets 时,确保不要在日志中输出它们,因为这会使它们变得易于被第三方访问。
记录 secrets 的使用
如果你的项目在多个团队之间共享,或者你不确定其他人是否已经访问了 secrets 文件,那么应该记录谁以及何时访问了 secrets 文件。
设置适当的权限
确保 secrets 文件只有适当的权限,以防止恶意的访问和意外的修改。
示例代码
const secretsHandler = require('secrets-handler'); secretsHandler.loadSecrets().then((secrets) => { console.log(secrets.api_key); console.log(secrets.db_password); }).catch((error) => { console.error('Could not load secrets:', error); });
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60057a6981e8991b448eb502