node.js - 保护 NodeJS RESTful API 和 React 客户端应用程序
问题描述
我有一个内置在 NodeJS 中的后端 RESTful API 和一个在 React JS(NextJS)中的前端应用程序,两者都托管在 AWS 上。客户端和服务器使用 JWT 令牌进行通信。我想确保客户端应用程序和服务器端应用程序都是高度安全的。
我做了什么:
- 我对客户端和服务器都使用 HTTPS
- 将客户端反应应用 IP 地址列入白名单,以便只有客户端反应应用可以与服务器应用通信。这是在 AWS 安全组中完成的
- 在我的服务器 Node.JS 应用程序中使用 cors,将客户端 IP 地址再次列入白名单,作为对 1 号的补充
- 使用 AWS WAF保护后端 NodeJS 应用程序,
- 在 NodeJS 服务器后端 API 中使用头盔
- 确保 JWT 令牌仅持续 7 天,它将失效,用户需要再次登录才能获取新令牌。
我看过并使用过的答案:
根据:RESTful Authentication我在 HTTP 标头中使用令牌(例如 OAuth 2.0 + JWT),这是我为每个客户端请求发送的
使用刷新令牌:刷新令牌 Jsonwebtoken
我关心的是什么,我需要一些帮助:
1.既然JWT令牌是服务器验证客户端的方式,那么JWT通信是否安全?我可以采取其他步骤来提高 JWT 的安全性吗?
2. 这个应用架构是否足够安全?
3. 我还可以做些什么来提高它的安全性,因为我真的很担心并希望确保它非常安全。
4. 我应该加密从客户端发送到服务器的 JSON 有效负载吗?因为这在 XHR 下的任何浏览器网络选项卡中都可见,所以我将用户名和密码作为登录的有效负载发送。
我最关心的是安全性,因为我已经在应用程序中集成了条带支付,而且我还存储了一些敏感数据。
任何建议将不胜感激,这是我第一次部署生产应用程序。
解决方案
正如你所做的那样,应用程序必须非常安全......除了我想添加一些东西......
- 确保令牌已过期并使用刷新令牌颁发新令牌。存储在客户端的 jwt 可能容易受到中间人攻击。(为了获得更高的性能,请使用 redis 来存储刷新令牌......查看更多内容)
- 如果您使用的是 https,则该请求将仅对客户端的浏览器可见,而对网络中的任何嗅探器均不可见(检查此是否能够在诸如 wireshark 等嗅探工具中看到加密的有效负载......以验证使用的 https uve )。因此,没有必要再进行任何加密。这会降低 api 服务器的性能。
推荐阅读
- java - Java 和 MapStruct
- bash - 如何从 Harbor 中自动删除 Docker 镜像?
- python - 数据流作业在 BigQuery 写入失败并出现后端错误
- javascript - Mongodb Group 并从文档中获取其他字段
- java - 检查一个项目是否是一个特定的 ArrayList,而不是一个具有相等值的项目
- laravel - 如何加载与 { json:api } 客户端的关系?
- .net - WireMock 中 STARTED 的 .NET 等价物是什么?
- python - Plotly:如何使用 updatemenus 更新一个特定的跟踪?
- c# - Xamarin.Forms StackLayout 分为 3 列
- c - 调试器在哪里保存指向代码段中下一个命令的指针?