如何防止其他用户像其他用户一样劫持 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
,应该只对
进行 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}
User A should not be able hijacking the route update of other users
劫持
用户 A 应该只能访问 000000000000
。
现在,用户 A 可以调整 HTTP 请求并以 用户 B
的身份进行 PUT
http://www.app.com/api/111111111111/access/update
{deviceMac:111111111111, access: false}
问题
如何防止其他用户像其他用户一样劫持请求负载?
我应该调整我的中间件来解决这个问题吗?
有一个基于令牌的系统。
进行某种登录,甚至是一些简单的操作,例如当用户打开您的应用程序时,您使用当前用户的 MAC 地址向您的服务器发送请求并生成一个令牌(bin2hex(random_bytes(30))
,请注意,这将生成一个 60 个字符的标记,它可能看起来过多,也可能看起来不多)分配给此 MAC 地址。
然后,您可以创建一个 custom middleware 来检查发送的 MAC 地址是否有令牌,以及该令牌是否与启动时分配给它的 MAC 地址相匹配。
注销时不要忘记使令牌无效,如果您没有注销,请定期保持令牌有效(实际上,即使您有明确的注销按钮,此步骤也是可取的).
最后,我强烈建议您更新到最新版本的 Laravel,因为您似乎落后了很多。与您的 5.1 相比,当前版本是 5.7。
我有
一个 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}
User A should not be able hijacking the route update of other users
劫持
用户 A 应该只能访问 000000000000
。
现在,用户 A 可以调整 HTTP 请求并以 用户 B
的身份进行 PUThttp://www.app.com/api/111111111111/access/update
{deviceMac:111111111111, access: false}
问题
如何防止其他用户像其他用户一样劫持请求负载?
我应该调整我的中间件来解决这个问题吗?
有一个基于令牌的系统。
进行某种登录,甚至是一些简单的操作,例如当用户打开您的应用程序时,您使用当前用户的 MAC 地址向您的服务器发送请求并生成一个令牌(bin2hex(random_bytes(30))
,请注意,这将生成一个 60 个字符的标记,它可能看起来过多,也可能看起来不多)分配给此 MAC 地址。
然后,您可以创建一个 custom middleware 来检查发送的 MAC 地址是否有令牌,以及该令牌是否与启动时分配给它的 MAC 地址相匹配。
注销时不要忘记使令牌无效,如果您没有注销,请定期保持令牌有效(实际上,即使您有明确的注销按钮,此步骤也是可取的).
最后,我强烈建议您更新到最新版本的 Laravel,因为您似乎落后了很多。与您的 5.1 相比,当前版本是 5.7。