api - 存储 API 密钥
问题描述
我正在建立一个网站,该网站将有一个与 mollie API 配合使用的支付系统。特别是网站需要向用户发送他们订购产品的付款链接。为实现该功能,mollie 需要使用 api 密钥进行身份验证。所以我需要将 api 密钥安全地存储在某个地方。
所以我的想法是在管理员注册他的 api 密钥 (CMS) 时使用 AES 对称密码加密。通过这种加密,我只需要一个密钥来解密和加密 api 密钥。我正在考虑使用管理员的纯文本密码作为密钥,因为我不存储这个值(我对密码进行哈希处理)所以它只有在管理员输入他的密码时才可用。因此,当管理员想要向用户发送付款时,网站会询问他的密码。
所以我的问题是:这是存储 api 密钥的安全方式吗?
对不起我的英语不好,这不是我的母语。
解决方案
第一的。API 机密和密码具有不同的生命周期(密钥轮换和密码更改策略),并且可能具有不同的复杂性要求。
其次,管理员的明文密码不应该用于除了登录管理员之外的任何其他用途。不要把所有的鸡蛋都放在一个篮子里——你想限制损害的范围,以防一个秘密被泄露。
您最好为 API 密钥加密/解密创建一个单独的秘密,并将其存储在一些秘密管理中,例如 Vault、AWS 秘密等。
如果您想完全避免存储 API 密钥,并且管理员只需记住它就可以了,那么您可以让管理员手动输入密钥,例如第二个密码,但无论如何,结合起来都是不好的做法使用管理员的登录密码。
推荐阅读
- c - 我的程序没有按照应有的方式对齐列 [C 语言]
- haskell - 用字符串元组列表替换字符串
- python - 巨蟒棋盘
- firebase - 恢复已删除的 Firebase 存储规则
- python - python - 将图像保存到生成的目录
- python - aggfunc count 和 len 有什么区别
- rust - Rust 中的链式向量和 IntoIterator 元素
- c# - CookieApplicationOptions LoginPath 何时何地检查重定向?
- perl - How to replace lines with carriage return in perl?
- vue.js - Nuxt 中间件是否可以等待 asyncData 请求解决?