如何防止其他用户像其他用户一样劫持 HTTP 请求负载?

How do I prevent other users from hijacking the HTTP request payload as other users?

我有

一个 Laravel 带有路线的应用程序

Route::put('/api/{deviceMac}/access/update','DeviceController@update');

规则

如果用户 A 有 deviceMac 000000000000,应该只对

进行 PUT
http://www.app.com/api/000000000000/access/update
{deviceMac:000000000000, access: true}

如果用户 B 有 deviceMac 111111111111,应该只对

进行 PUT
http://www.app.com/api/111111111111/access/update
{deviceMac:111111111111, access: true}

User A should not be able hijacking the route update of other users

劫持

用户 A 应该只能访问 000000000000

现在,用户 A 可以调整 HTTP 请求并以 用户 B

的身份进行 PUT
http://www.app.com/api/111111111111/access/update
{deviceMac:111111111111, access: false}

问题

如何防止其他用户像其他用户一样劫持请求负载?

我应该调整我的中间件来解决这个问题吗?

有一个基于令牌的系统。

进行某种登录,甚至是一些简单的操作,例如当用户打开您的应用程序时,您使用当前用户的 MAC 地址向您的服务器发送请求并生成一个令牌(bin2hex(random_bytes(30)),请注意,这将生成一个 60 个字符的标记,它可能看起来过多,也可能看起来不多)分配给此 MAC 地址。

然后,您可以创建一个 custom middleware 来检查发送的 MAC 地址是否有令牌,以及该令牌是否与启动时分配给它的 MAC 地址相匹配。

注销时不要忘记使令牌无效,如果您没有注销,请定期保持令牌有效(实际上,即使您有明确的注销按钮,此步骤也是可取的).

最后,我强烈建议您更新到最新版本的 Laravel,因为您似乎落后了很多。与您的 5.1 相比,当前版本是 5.7。