Spring Boot 防止从不同设备发送请求

hmae6n7t  于 2023-05-17  发布在  Spring
关注(0)|答案(1)|浏览(164)

我有一个Sping Boot 项目,它有一个登录端点,可以生成一个用于访问其他端点的令牌。当用户从特定设备(浏览器或应用程序)登录时,我希望添加一项安全措施,以防止生成的令牌在其他设备上使用。换句话说,令牌应该只对生成它的设备有效。
例如:
用户从设备X登录并收到类似*************的令牌。如果用户尝试使用来自设备Y或任何其他设备的相同令牌,则应拒绝对端点的访问。目前,我已经实现了一个AllRequestFilter类来过滤所有请求。如何将此特定于设备的安全性添加到应用程序中?
以下是我的一些具体要求:

  • 令牌应绑定到生成它的设备,以防止在其他设备上使用它。
  • 该解决方案应适用于基于浏览器的登录和来自移动的应用程序的登录。
  • 我希望在API级别实现这种安全措施,而不是依赖于客户端的设备识别。

我将感谢任何关于如何在我的Sping Boot 应用程序中实现此特定于设备的安全功能的建议或想法。感谢您的评分

zd287kbt

zd287kbt1#

我就直接写下来。
你不能
你应该给予这一切。只需根据给定的标准(如oauth2等)实现安全性,而不要试图实现自定义的东西。
让我们看看您的需求:

  • 令牌应绑定到生成它的设备,以防止在其他设备上使用它。

要做到这一点,服务器需要在生成时确切地知道设备是谁,以及我们如何保证它是它声称的设备?除非我们从一些严重的指纹识别开始,我们从设备本身收集大量数据点并将其存储在服务器端,否则我们不能。收集这些信息可能侵犯隐私,违反欧洲的GDPR规则,并处以巨额罚款。

  • 该解决方案应适用于基于浏览器的登录和来自移动的应用程序的登录。

设备可以被欺骗,浏览器可以被欺骗。这也意味着每次用户切换计算机或浏览器时,您都需要再次对其进行指纹识别,这是对隐私的高度侵犯。

  • 我希望在API级别实现这种安全措施,而不是依赖于客户端的设备识别。

你这里的要求基本上是不可能的。所以你想确保某些东西只在特定的设备上工作,但你只想写服务器端的代码?

一般讨论

客户的任何东西都可能被欺骗。这就是为什么我们有密码和强密钥,因为这是我们唯一不能欺骗的东西。来自客户端/设备等的所有其他内容都可以伪造,因此您不可能拥有这样的安全性。

  • 密码可能被偷泄露
  • 设备可能被欺骗
  • 证书(mTLS)可能被盗
  • 在没有告知客户原因的情况下进行数据指纹识别,并且您应该有非常充分的理由这样做,否则是非法的,不道德的,并且违反了GDPR。

所以再一次。给予这个想法。实现oauth2并收工。

相关问题