繁体   English   中英

如何防止其他用户像其他用户一样劫持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 ,则应仅对

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}

问题

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

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

有一个基于令牌的系统。

进行某种形式的登录,甚至像用户打开应用程序时一样简单,您会使用当前用户的MAC地址向服务器发送请求并生成令牌( bin2hex(random_bytes(30)) ,请注意,这会生成分配给此MAC地址的60个字符的令牌(可能看起来过多,也可能看起来不太多余)。

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

退出时,别忘了使令牌失效,如果没有退出,则使令牌保持活动状态(实际上,即使您有明确的退出按钮,也建议执行此步骤)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM