2017-01-04 18 views
0

这是一个关于在Slim PHP API中实现JWT的最佳方式的问题 - 我正在寻找有关如何继续操作的高级/经验丰富的开发人员的一些指导。在PHP Slim API中查询字符串JWT JSON Web Token身份验证

我目前有一个开放的API,用户可以使用查询参数(如设备和日期时间范围)来执行获取请求以获取数据。我也有设备发布数据,没有身份验证。我们尚未投入生产,但显然这很糟糕。

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

什么似乎是更安全的方式将令牌通过标题。但从我所了解的情况来看,您需要Postman之类的东西才能发送请求,这不是一种真正的选择,因为我的用户只想使用浏览器访问数据。

回答

0

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

令牌可以存储在浏览器将自动包含每个请求的安全Cookie中。 (JWT的Slim中间件具有内置的这个功能)。检查出许多可用的库https://jwt.io/

如果您使用cookie,则不需要向查询字符串添加令牌,我不建议向查询字符串添加令牌,因为它们很容易泄露。 (用户喜欢&粘贴网址复制到对方,这也将泄漏的令牌)

注意:如果你不知道,如果JWT是适合你,请上网:http://cryto.net/~joepie91/blog/2016/06/19/stop-using-jwt-for-sessions-part-2-why-your-solution-doesnt-work/