在PHP Slim API中查询字符串JWT JSON Web令牌身份验证



这是一个关于在Slim PHP API中实现JWT的最佳方法的问题-我正在从资深/经验丰富的开发人员那里寻求如何进行的指导。

我目前有一个开放的API,用户可以使用查询参数(如设备和日期时间范围)来执行get请求,以提取数据。我也有一些设备正在张贴数据,没有身份验证。我们还没有生产,但显然这很糟糕。

为了解决这个问题,我一直在研究在第一种情况下对GET请求实现无状态身份验证,特别是使用JWT。我最初考虑将JWT作为查询字符串传递,并在用户登录后通过web前端执行重置令牌的选项。然而,我可以看到这对中间人攻击和我的令牌被暴露(如果使用纯http)不利。如果我要确保所有的获取/发布请求都作为https请求执行,这是否足够安全?

似乎更安全的方法是通过标头传递令牌。但据我所知,你需要像Postman这样的东西才能发送请求,这不是一个真正的选择,因为我的用户只想使用浏览器访问数据。

使用http毫无意义,https是必须的,否则用户和服务器之间的每个人都会看到密码,甚至可以缓存响应。

令牌可以存储在安全cookie中,浏览器会自动将其包含在每个请求中。(JWT的Slim中间件内置了此功能)。在上查看许多可用的库https://jwt.io/

如果您使用cookie,则不需要向查询字符串添加令牌,我不建议向查询字符串中添加令牌,因为它们很容易泄露。(用户喜欢相互复制和粘贴URL,这也会泄露令牌)

注意:如果您不确定JWT是否适合您,请查看:http://cryto.net/~joepie91/blog/2016/06/19/stop-using-jwt-for-sessions-part-2-你的解决方案不起作用/

最新更新