我有一个Android应用程序,它与我用PHP编写的服务器交互。我已经做了几个请求,将通过Android从Android应用程序调用,并将以JSON格式回答。
我有登录请求,android应用程序会将凭证(密码和用户名)发送到服务器。如果登录成功,session_ID将作为答案发送。对于需要用户身份验证的每个其他请求,将需要session_ID。如果没有设置session_ID,我将假设用户未被记录。否则,如果session_ID存在,我将使用请求的数据回答请求
我将使用以下代码检查身份验证。
inout
你认为这是一个好方法吗?我已经看到帖子谈论令牌而不是session_ID来处理需要验证的android-php交互,这有什么区别?
答案 0 :(得分:0)
登录后有很多解决用户身份验证的方法,最新和最热门的是JWT,JSON Web令牌,这是一种在客户端存储会话的简单方法,使其安全可靠从服务器端。
JWT确保用户无法篡改它发送到服务器的数据,因为它们来自服务器(例如用户ID)并由服务器签名。
通过这种方式,您无需在服务器端执行任何数据库查询,也无需获取帐户ID或相关数据,只需检查客户端发送的数据是否由您签名,之后您就可以了很好,可以节省一些服务器CPU周期..但是包含一个小的开销,发送JWT需要一些数据交换,但你可以保持它尽可能小。
我喜欢在客户端“缓存”一些数据,因为令牌也可以在客户端使用这些ID。
要回答你的问题,你的方法很简单,几乎不需要任何努力,也像cookie一样安全,只要你不能在MITM场景中获取id,你就是好的
答案 1 :(得分:0)
@ chsharper,@ pasi
我认为JWT本身不够安全。是的,它由服务器签名,并且保证不受篡改。但是,如果某人知道JWT(如果保存在本地存储中),则同一JWT可以在Ttl期间内多次使用(黑客可能会使用JWT并在Ttl期间内模拟)。如果我们将JWT保存在cookie中并使用HTTPS随每个请求将其发送回服务器,我知道情况有点紧张,但是它完全不可重复吗?我建议对JWT使用一次令牌,这样可以防止重复请求。
您认为这是一个好方法吗?任何对此的想法将不胜感激。
谢谢