React App 和 node.js 后端 api 安全获取

Posted

技术标签:

【中文标题】React App 和 node.js 后端 api 安全获取【英文标题】:React App and node.js backend api secure fetching 【发布时间】:2021-07-06 11:10:26 【问题描述】:

我最近在服务器上设置了一个 React-App 和一个单独的 Node.js/express 应用程序。 我希望 React 应用程序能够从节点应用程序中获取数据,但我不希望外部的任何人都能够访问这些 api 调用,而不是来自请求,也不是来自直接链接、邮递员等。

起初我想使用 express-ipfilter 只允许来自服务器的请求,但我想这不会起作用,因为请求通常来自用户 ip!?

让我的 react 应用程序对其内容进行静态 api 调用而不将 api 暴露给外部的最佳方法是什么?

我对此有点迷茫,任何帮助或建议将不胜感激!

【问题讨论】:

【参考方案1】:

您不能向所有人公开您的应用并隐藏您的 API。您唯一能做的就是只允许您的域使用 cors,但任何人仍然可以复制 curl 并将其粘贴到邮递员中。 您需要身份验证来限制访问(JWT、oauth2、cookie 等...)

【讨论】:

好的,我想是的...谢谢。我想我很快就会研究 JWT。 @DanielusDrachenberg 继续搜索.. 答案没有错,但我认为还有其他可能对您有用的东西:CSRF Mitigation for Express.js with Same-Site Cookie flag、Secure React app with CSRF、About Node app securing、CORS protection duplicate question 当你在 Web 上使用 React.js 时,可能会用到 cookie,所以无论如何你都可以使用它们来满足你的需要。但对于 REST API,保护端点的唯一方法是 JWT、Firebase、OAuth2,如上所述(仅用于完整评论)。

以上是关于React App 和 node.js 后端 api 安全获取的主要内容,如果未能解决你的问题,请参考以下文章

React/Redux 前端和 Node.js 后端之间的 CORS 问题 [重复]

React 前端,Node JS 后端托管

React-Router vs Node.js

如何将表单数据从 React 发送到 Node JS 后端服务器

Node.js - 在终端中显示 ESLint 错误,如 create-react-app

JS周刊#434 - Svelte 3,Node.js 12 和 Create React App 3.0 发布