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

时间:2018-11-26 16:40:38

标签: php laravel laravel-5 laravel-5.1 laravel-middleware

我有

带有路线的Laravel应用

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

规则

如果用户A拥有deviceMac 000000000000,则应将其放置到

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

如果用户B拥有deviceMac 111111111111,则应将其放置到

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

用户A不应能够劫持其他用户的路由更新

劫持

用户A应该只能访问000000000000

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

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

问题

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

我应该调整中间件来解决此问题吗?

1 个答案:

答案 0 :(得分:2)

具有基于令牌的系统。

具有某种登录功能,甚至与用户打开应用程序时一样简单,您会使用当前用户的MAC地址向服务器发送请求并生成令牌(bin2hex(random_bytes(30)),请注意,会产生一个60个字符的令牌,这个令牌可能看起来过多,也可能看起来没有过多),并分配给了该MAC地址。

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

在退出时不要忘记使令牌失效,如果没有退出,请按时保持令牌活动(实际上,即使您有明确的退出按钮,此步骤也是可取的)。

最后,我强烈建议您更新到最新版本的Laravel,因为您似乎远远落后。当前版本是5.7,而您的版本是5.1。