首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何安全地存储通过客户端提交的用户API密钥

如何安全地存储通过客户端提交的用户API密钥
EN

Security用户
提问于 2021-04-28 02:43:13
回答 3查看 627关注 0票数 2

我正在开发一个web应用程序,它将要求用户通过客户端提供第三方API密钥,然后使用它从我的应用程序后端向第三方API发出请求。

经过研究,我认为最好的方法和标准实践是将这些API键作为纯文本存储在我的数据库中。

但是,我的问题在于这些密钥在从客户端发送到数据库的过程中的安全性。

为了进一步澄清,第三方API密钥将由用户客户端通过标准的HTML表单输入,提交后,客户端将向我的后端发出一个post请求,后者将将密钥存储在mongodb中。

在将这些密钥从客户端发送到后端的过程中,坏角色能够通过dev工具或其他恶意方法访问这些密钥吗?

如果是的话,我可以采取哪些操作来进一步保护它们,同时将它们从客户端发送到数据库?

EN

回答 3

Security用户

发布于 2021-04-28 07:07:57

API密钥基本上是一个密码。因此,像TLS运输这样的通常保护措施(即使用HTTPS)应该是足够的。

票数 0
EN

Security用户

发布于 2022-09-20 21:23:47

是的,因为这需要清晰的文本恢复,所以在你的手中就少了。

  • 仅使用https严格执行此操作。
  • 执行额外的字段“请求域”,这样只有yourapp.com才能在被盗时使用
  • 只使用POST永不获取(避免日志/历史记录)
  • 使用输入type=password,使其显示为*
  • 防止用户也恢复/相反,强迫他们获得新的(停止泄漏的工作人员)
  • 建议用户设置较短的过期时间

我不确定我是否会像我说的那样设置对称加密,这不一定是您的问题,但是可以很容易地撤销密钥:)也许将它存储在浏览器加密的存储中,但这将不能运行服务器到服务器。

票数 0
EN

Security用户

发布于 2022-10-21 06:33:07

今天,大多数API使用API密钥对web服务的合法客户端进行身份验证。从客户端的角度来看,API密钥的使用非常简单:

  • 您可以从服务获得一个API密钥(本质上是一个共享的秘密)。
  • 将密钥添加到授权头。
  • 调用API。

有几种保护API密钥的方法,如:

  1. 加密:因为后端有控制,所以可以实现从前端到后端的加密/解密方法。您可以放置一个解密有效负载的中间件。client ->加密-body -> api ->控制器(中间件解密体) -> db
  2. 使用HTTPS:通信将被加密,MITM攻击将无法工作。
  3. 使用POST而不是获得请求
  4. 使用JWT作为REST的附加安全性:https://blog.logrocket.com/secure-rest-api-jwt-authentication/

我想回答你的问题

在将这些密钥从客户端发送到后端的过程中,坏角色能够通过dev工具或其他恶意方法访问这些密钥吗?

答案:

开发工具是用于开发和调试的,恶意黑客看不到任何东西,他们可以使用burpsuite看到他们在web表单上提供的内容(基本上他们不知道您的密钥)。如果您的站点没有使用HTTPS/HTTP,就会发现这一点。

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/248804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档