我有一个在NodeJS中内置的后端RESTful API,在React JS(NextJS(中有一个前端应用程序,两者都托管在AWS上。客户端和服务器使用 JWT 令牌进行通信。 我想确保客户端应用程序和服务器端应用程序都高度安全。
我做了什么:
- 我正在为客户端和服务器使用 HTTPS
- 将客户端反应应用 IP 地址列入白名单,以便只有客户端反应应用可以与服务器应用通信。这是在 AWS 安全组中完成的
- 在我的服务器 Node.JS 应用程序中使用 cors,再次将客户端 IP 地址列入白名单,作为 1 号的补充
- 使用 AWS WAF 保护后端 NodeJS 应用程序,
- 在 NodeJS 服务器后端 API 中使用头盔
- 确保 JWT 令牌仅持续七天,它将无效,用户需要再次登录才能获取新令牌。
我看过并使用的答案:
-
如何保护客户端应用 (react( 和 API 通信
-
根据:RESTful 身份验证我在 HTTP 标头中使用令牌(例如 OAuth 2.0 + JWT(,这是我为每个客户端请求发送
的
使用刷新令牌 :刷新令牌 Jsonwebtoken
我担心什么,我需要一些帮助:
1. 由于 JWT 令牌是服务器验证客户端的方式,因此 JWT 通信是否安全?我是否可以采取其他步骤来提高 JWT 安全性?
2. 此应用程序架构是否足够安全?
3.我还能做些什么来提高它的安全性,因为我真的很担心并希望确保它非常安全。
4. 我应该加密从客户端发送到服务器的 JSON 有效负载吗? 因为这在 XHR 下的任何浏览器网络选项卡中都可见,所以我将用户名和密码作为登录的有效负载发送。
我最关心的是安全性,因为我在应用程序中集成了条纹支付,并且我还存储了一些敏感数据。
任何建议将不胜感激,这是我第一次部署生产应用程序。
到目前为止,应用程序必须非常安全。除了我想补充一些东西....
- 确保令牌已过期,并使用刷新令牌颁发新令牌。存储在客户端的 jwt 可能容易受到中间人攻击。(为了提高性能,请使用 redis 来存储刷新令牌...多看这个(
- 如果您使用的是https,则请求仅对客户端的浏览器可见,而对网络中的任何嗅探器都无效(检查您是否能够在嗅探工具(如wireshark等(中看到加密的有效负载......以验证所使用的https uve(。因此,没有必要进行更多的加密。这会降低 api 服务器的性能。