我有一个实现JSON Web令牌身份验证的快速后端。用户提供正确的用户名和密码后,就会使用Secret生成令牌。
现在,假设该用户想要删除其项目,为此,将DELETE请求发送到programs /:programId。 API服务器使用JWT中间件来验证令牌是否有效,然后更新数据库。
基本上我的问题是:如何确保提出请求的用户是项目的所有者?如果我可以使用任何有效令牌和有效正文简单地将请求发送到正确的路由,那么什么能阻止任何用户发送恶意请求以及删除/编辑/访问其他用户的数据?
这与JWT有效负载有关吗?
谢谢。
答案 0 :(得分:1)
有几种方法可以处理此问题,并且您选择的确切解决方案将取决于您的体系结构,是否使用API网关等。
防止用户删除他人项目的一种方法是更改delete API,使其也需要用户ID作为输入参数之一。假设您仅进行了此更改,那么您的工作流程将如下所示:
programId
以及来自JWT的用户ID路由到删除端点上面的关键点是服务器不从外部接受用户ID。而是由用户证明自己具有有效的JWT,可以从中提取其用户ID。