【问题标题】:Securing NodeJS RESTful API and React client app保护 NodeJS RESTful API 和 React 客户端应用程序
【发布时间】:2020-10-24 07:23:03
【问题描述】:

我有一个在 NodeJS 中构建的后端 RESTful API 和一个在 React JS(NextJS) 中的前端应用程序,两者都托管在 AWS 上。客户端和服务器使用 JWT 令牌进行通信。 我想确保客户端应用程序和服务器端应用程序都高度安全。

我做了什么:

  • 我对客户端和服务器都使用 HTTPS
  • 将客户端 React 应用 IP 地址列入白名单,以便只有客户端 React 应用可以与服务器应用通信。这是在 AWS 安全组中完成的
  • 在我的服务器 Node.JS 应用程序中使用 cors,将客户端 IP 地址再次列入白名单,作为对 1 号的补充
  • 使用 AWS WAF 保护后端 NodeJS 应用程序,
  • 在 NodeJS 服务器后端 API 中使用 helmet
  • 请确保 JWT 令牌仅持续 7 天,它将失效,用户需要重新登录才能获取新令牌。

我看过并使用过的答案:

  1. How to secure client app (react) and API communication

  2. 根据:RESTful Authentication 我在 HTTP 标头中使用 Token(例如 OAuth 2.0 + JWT),这是我为每个客户端请求发送的

  3. 使用刷新令牌:Refresh Token Jsonwebtoken

    我关心的是什么,我需要一些帮助:

    1.既然 JWT 令牌是服务器验证客户端的方式,那么 JWT 通信是否安全?我还可以采取其他措施来提高 JWT 的安全性吗?

    2。这个应用架构是否足够安全?

    3.我还可以做些什么来提高它的安全性,因为我真的很担心并希望确保它非常安全。

    4.我应该加密从客户端发送到服务器的 JSON 有效负载吗?因为这在 XHR 下的任何浏览器网络选项卡中都可见,所以我将用户名和密码作为登录负载发送。

我最关心的是安全性,因为我已经在应用程序中集成了条带支付,而且我还存储了一些敏感数据。

任何建议都将受到高度赞赏,这是我第一次部署生产应用程序。

【问题讨论】:

    标签: node.js api rest security


    【解决方案1】:

    根据你所做的,应用程序必须非常安全......除了我想添加一些东西......

    1. 确保令牌已过期并使用刷新令牌颁发新令牌。存储在客户端的 jwt 可能容易受到中间人攻击。 (为了获得更高的性能,请使用 redis 来存储刷新令牌......查看更多内容)
    2. 如果您使用 https,则该请求将仅对客户端的浏览器可见,而对网络中的任何嗅探器均不可见(检查是否能够在诸如 wireshark 等嗅探工具中看到加密的有效负载...以验证https 已使用)。因此,没有必要再进行任何加密。这会降低 api 服务器的性能。

    【讨论】:

      猜你喜欢
      • 2018-08-26
      • 2014-12-26
      • 2019-12-19
      • 1970-01-01
      • 2017-03-30
      • 2019-12-02
      • 2014-10-28
      • 2018-03-21
      • 2022-01-01
      相关资源
      最近更新 更多