[英]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.