0

我有一个应用程序包含:

  • .net 核心 3.1
  • Microsoft .net 核心上的脚手架身份
  • ef 核心 3.x
  • Vue.js
  • 网络核心网络API

(重要信息:一切都在一台服务器上的一个解决方案中)

现在我正在考虑保护我的 Web API。此应用程序不必像银行一样安全,但我想实现比最低安全性更高的一点。

问题

我想保护我的 API

我做了什么

所以我已经获得了身份授权。所有允许用户输入数据的请求,我都在使用 [Authorize](使用 Idenitiy)。

我的问题

  1. 我已经阅读了多个地方,当我有一个 Rest API 时,我应该使用 JWE 加密。当我知道只有授权用户才能发送数据时,我是否也需要 JWE?没有敏感信息。(但我见过的所有地方,应用程序都会跟踪用户名/密码)
  2. 我有多个 GET 请求,不需要任何授权。我应该在那里使用 JWE 吗?当我没有关于用户的任何信息(如用户名/电子邮件)时,我应该使用什么用户信息来加密它?
  3. 是否有任何其他方法可以保护我的 Getcall,以便不是“每个人”都能够获取/调用信息?我已启用 (cors)

这三个问题相互关联,因此通过将它们分开,更容易回答我需要帮助的细节。

4

1 回答 1

0
  1. JWE 不是必须的。它只是为您的 http 请求增加了更多的安全性,因为有人可能会破坏浏览器的请求通道,并且可以在应用 SSL 加密并将它们转发到服务器之前获取请求[这可能但非常困难]。
  2. 这取决于你。如果您认为该信息是敏感的,那么您可以加密。对于加密,始终创建会话令牌,然后将这些令牌用于请求加密。这些会话令牌独立于登录用户。无论是否登录,都会为每个客户端创建会话令牌。
  3. 如果您的 api 是安全的,则无需担心任何事情。CORS 只能在浏览器中运行,但不能在 shell 等其他类型的客户端中运行,因此 CORS 的设计基本上只是为了阻止未经授权的域提供资源。它几乎无法从攻击者手中拯救 api。我可以在一分钟内向您的 api 生成虚假的 1000 个请求,并且会使您的服务器崩溃。因此您可以限制某个时间间隔内来自用户的请求频率。每次用户请求更新数据库中会话令牌 [我前面提到的] 条目中的时间戳时,如果有另一个请求,请检查用户是否被允许请求 api 否则返回错误。
于 2020-10-16T04:44:10.630 回答