使用 React 前端处理受密钥保护的 API 操作的正确方法是啥?

Posted

技术标签:

【中文标题】使用 React 前端处理受密钥保护的 API 操作的正确方法是啥?【英文标题】:What is the proper way to handle key-secured API operations with a React front-end?使用 React 前端处理受密钥保护的 API 操作的正确方法是什么? 【发布时间】:2020-11-02 22:10:24 【问题描述】:

当考虑到我的 react-application 需要 API 密钥来访问它用于安全数据库上的 CRUD 操作的后端时,我遇到了这个问题:

https://create-react-app.dev/docs/adding-custom-environment-variables/

WARNING: Do not store any secrets (such as private API keys) in your React app!

我希望通过应用程序身份验证的用户能够执行这些操作,而不必将 API 密钥暴露给最终用户。

共同的共识似乎是创建一个中间层,即正确处理丰富/转发请求的快速服务器。但此时,如果我想针对中间层对 Web 应用程序进行身份验证,就会出现同样的问题,最终以一种或另一种方式暴露原始安全 API 后端。

有没有办法保证前端应用程序和原始安全后端之间的“握手”?如果我需要访问代码库来这样做,我可以通过中间层来代替吗

【问题讨论】:

【参考方案1】:

您必须在您的 Express 服务器中禁用 CORS。这意味着除了您的前端之外,没有其他客户端可以向您的 Express 服务器发送请求。然后,虽然您对快速服务器的授权已公开,但除非请求来自您的前端应用程序,否则它无济于事。

【讨论】:

谢谢!是否存在恶意客户端以某种方式模仿您的应用程序的潜在风险?

以上是关于使用 React 前端处理受密钥保护的 API 操作的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

保护 Express API

从 React 调用受 Azure AD 保护的 API

使用React构建受保护的路由

如何在没有弹簧安全的情况下使用 api 密钥保护 rest api

Django 手动检查 CSRF 令牌

从 Angular 访问受 Google IAP 保护的 API