【问题标题】:How to prevent response from the server modify by users?如何防止服务器响应被用户修改?
【发布时间】:2021-09-21 18:59:19
【问题描述】:

我已经使用 spring、java 和 angular 构建了一个系统。当用户成功登录系统后,后端将获取特定用户的角色列表。然后,我意识到来自服务器的响应可以在到达用户之前修改。因此,用户有可能为自己添加更多角色并执行非法操作。

例如: 用户 A 应该只有查看数据的角色。但是当 API 调用后端获取角色时,用户会截取服务器的响应并添加 modify role 给自己。现在用户可以看到修改按钮并开始修改。

有什么办法可以防止这种情况发生吗?

【问题讨论】:

  • 你无法阻止它的发生,所以你必须让它变得无关紧要——服务器应该信任客户端在发出请求时声称它拥有的角色。您不能依靠禁用 UI 中的按钮来保护您的数据。
  • 你可以看看 JSON Web Tokens (JWT),它可能支持类似的东西。您基本上会在令牌的有效负载中发送声明,然后客户端将令牌发送回服务器。但是,在信任 JWT 之前,服务器会对其进行验证,即它使用密钥从令牌创建哈希,并将其与之前创建并发送给客户端的哈希进行比较(并且可能还会在内部存储该哈希)。
  • 是的,我已将 Bearer Token 用于身份验证部分

标签: java angular security spring-security


【解决方案1】:

让后端检查每个请求中的用户角色。我的意思是,如果您的用户请求一个操作(具有修改的角色),您总是检查用户是否具有有效的令牌以及他们的角色(保存在您的数据库中)是否正确。这种方式与用户发送给您无关,您始终确认该操作是否允许。

在这种情况下,做一些非法行为的唯一方法是拥有其他用户访问令牌,但这是另一个安全问题。

【讨论】:

  • 这是否意味着我需要在系统中的每个 Controller 上实现角色检查?
  • 我不这么认为。我的意思是,您可以检查角色以显示或隐藏应用程序的某些部分,但有关允许的用户操作的真正检查必须始终在后端。
猜你喜欢
  • 2023-03-28
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多