带有路线的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
进行PUThttp://www.app.com/api/111111111111/access/update
{deviceMac:111111111111, access: false}
如何防止其他用户像其他用户一样劫持请求有效载荷?
我应该调整中间件来解决此问题吗?
答案 0 :(得分:2)
具有基于令牌的系统。
具有某种登录功能,甚至与用户打开应用程序时一样简单,您会使用当前用户的MAC地址向服务器发送请求并生成令牌(bin2hex(random_bytes(30))
,请注意,会产生一个60个字符的令牌,这个令牌可能看起来过多,也可能看起来没有过多),并分配给了该MAC地址。
然后,您可以创建一个custom middleware,以检查发送的MAC地址是否具有令牌,并且该令牌与启动时分配给它的MAC地址匹配。
在退出时不要忘记使令牌失效,如果没有退出,请按时保持令牌活动(实际上,即使您有明确的退出按钮,此步骤也是可取的)。
最后,我强烈建议您更新到最新版本的Laravel,因为您似乎远远落后。当前版本是5.7,而您的版本是5.1。