(设计题)前后端如何解耦,保护路由(后端)代码? (Node.js - 表达 - 反应)

(Design question) How to decouple front- and back-end to protect routing (backend) code? (Node.js - Express - React)

上下文:

我正在制作一个 React 网站,该网站从 Google 工作表 API 中提取信息并将特定行格式化为数据可视化。由于信息的敏感性,有些列我不想共享,幸运的是有一些方法可以共享 仅指定的 列,但这不是我提出以下问题的原因:

问题:

我想要一个节点 API 来处理来自 React 前端的请求,但其代码在客户端浏览器上不可用(例如,在创建的 bundle.js 文件中在构建期间)。

澄清:我注意到当 运行 大多数 Node-React 应用程序示例在本地并使用 webpack 构建它们时,你最终得到一个 bundle.js 包含在页面加载时传送到浏览器的节点请求处理代码的文件。

提案:

我是否需要部署两个单独的应用程序(一个用于 Node,另一个用于 React),或者我可以将它们放在一起而不让客户端看到服务器代码吗?

编辑POST答案:

you end up with one bundle.js file that contains Node request-handling code being delivered to the browser on page load.

这不是真的。我假设是请求处理代码的代码是客户端 请求调用 代码。

您可以添加一个简单的身份验证系统。已经有很多用于 Node 的包,所以不需要自己实现它。

具体来说,这将防止后端向未经授权的请求发送敏感数据。

编辑:澄清一下,Node.js 服务器上的代码 运行 不会公开发送,它会 运行 在您的服务器上并发送其 输出 到前端。

编辑 2:看来我误解了你的问题。
如果您的代码目前未解耦,则需要解耦。 React.js 项目的所有代码都发送到浏览器。由于没有后端来处理任何类型的访问逻辑,因此任何此类逻辑都必须在前端 (React.js),在那里很容易被规避。

已经解耦了。 您无需执行任何操作

请注意,您的 node.js 服务器代码的安全性取决于您的服务器配置,而不是 node.js。如果您通过未加密的文件共享或 FTP 访问您的服务器,那么您的节点服务器代码仍然不安全。

即使在使用加密时,也要避免受到危害的协议,例如 SSL 或 TLSv1.0(使用 TLSv1.3 代替 FTPS)