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

问题描述 投票:1回答:1

I have

一个带路线的Laravel应用程序

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

Rule

如果用户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}

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

Hijacking

用户A只能访问000000000000

现在,用户A可以调整HTTP请求并将PUT作为用户B

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

Questions

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

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

php laravel laravel-5 laravel-5.1 laravel-middleware
1个回答
2
投票

有一个基于令牌的系统。

有一些登录甚至是一些简单的事情,比如当用户打开你的应用程序时,你用你当前用户的MAC地址向服务器发送请求并生成一个令牌(bin2hex(random_bytes(30)),请注意这将生成一个60个字符的令牌,可能分配给此MAC地址的或者可能看起来不过分。

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

退出时不要忘记使令牌无效,如果您没有注销,请在时间基础上保持令牌活着(实际上,即使您有明确的注销按钮,也建议采取此步骤)。

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

© www.soinside.com 2019 - 2024. All rights reserved.