我想保护我的rest,我已经在使用JWT对用户进行身份验证。但是,如果具有JWT的用户更改PUT请求的有效负载,该怎么办?例如,我有一个put请求来更新一个帖子。我需要在体内传递帖子ID,如何防止用户更改帖子id并在邮递员中再次发送?如果他有一个jwt,他可以执行put api并更改他想要的任何帖子。我考虑从JWT中提取用户Id,并检查Post是否属于他。但我从来没见过这样的逻辑。它就这样存在吗?在更新对象之前检查要更新的对象是否属于JWT。
发布于 2022-01-24 12:22:53
您的推理是正确的:认为通过身份验证的用户不会恶意行为是幼稚的。在处理PUT路由的服务器端代码中,您应该验证有效负载,并确保经过身份验证的用户在实际代表用户进行更改之前具有在有效负载中执行操作的正确权限/权限。
发布于 2022-01-24 13:56:20
常见的做法是在突变前阅读资源。然后使用该资源的所有者ID从解码的令牌中断言用户的ID。
发布于 2022-01-24 18:04:57
我认为首先您需要验证发送到服务器的有效负载,然后检查用户是否拥有对该项或实体执行PUT请求的权限。在您的示例中,获取post,检查它是否属于用户,如果它不返回未经授权的响应(HTTP状态代码401 ),检查它是否属于用户,您还可以在访问函数的逻辑之前在中间件中实现它,以检查用户是否有这样做的权限。
https://stackoverflow.com/questions/70833669
复制相似问题