如何安全地存储 API 密钥和秘密?

时间:2021-02-23 05:26:30

标签: python php api

我正在构建一个 Web 应用程序,该应用程序对其他服务有一些 API 调用,目前我只是将这些 API 密钥和秘密放在不是很安全的变量中。

我的目标: 可以在代码中存储/保护这些 API 凭据,或者将其以加密形式存储到数据库中。

我目前正在使用 PHP 进行编码,并且我在 python 中有脚本来调用这些 API 服务。我计划创建一个 API 页面,用户可以在其中输入 API 凭据,然后将其加密/散列并存储到数据库中。但我不确定这是否是正确的方法或如何去做。

欢迎对此提供任何帮助。谢谢。

2 个答案:

答案 0 :(得分:0)

在 php 中加密事物的最佳方法是使用 sodium_crypto_secretbox,然后可以将其存储在数据库中。这仍然不是那么安全,因为您仍然需要将秘密箱密钥存储在某处。

如今,大多数人会回避这一点并使用某种第三方秘密存储服务。作为 AWS 用户,我使用 Secrets Manager,但还有许多其他服务/产品(例如 Hashicorp 保管库)提供秘密存储和轮换。

答案 1 :(得分:0)

实际上,在某些级别的安全性中,您无法确定该密钥是私有的。首先,散列不合适,因为您无法从其散列中获取 api 密钥,因此您无法使用该 api!如果您对该 api 密钥进行加密,则会有一个 key 和一个 algorithem 用于您的加密。如果此信息有可能被泄露,您无能为力!但总的来说,您信任某些安全层,并且可以说将应用程序密钥存储在 .env 文件中。我认为加密是将密钥存储在数据库中的一个好主意,以防数据库攻击泄露数据。