账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于jwt生成的token和session的安全性问题
    31
    0

    现在我所做的项目是前后端分离的,主要是api接口的开发,登陆逻辑是这样的,
    首先用户使用账号密码登陆,如果正确的话会自动生成一个token,并将token存放在redis中,同时将token返回给前端,之后前端每次调用api接口的时候都会在http的head中增加一个"X-TOKEN"的头,里面存放的就是token值,之后就会将该token和redis中的比较,看是否能成功。
    问题在于,如果有人拦截获取了这个token值,比如说用户连接了他家的wifi,然后设计一个ajax按照那个逻辑存放token值然后访问api接口,不就可以直接获取数据了吗,这样做的安全性在哪???

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • JWT(JSON Web Token)是一种基于HTTP的加密令牌。它可以有效地保护用户的身份和信息,避免中间人攻击。以下是一些关于JWT生成和使用的安全性问题:

      1. 安全性问题:首先,JWT的安全性取决于生成和解码令牌的算法。不同的算法有不同的安全性,例如,HS256算法被广泛认为是安全的。其次,JWT的安全性也取决于令牌的生命周期。如果令牌被不安全的第三方使用,那么它可能会被解码或重用,从而造成安全问题。

      2. 令牌过期问题:JWT的生存期是有限的,通常为2小时。如果令牌过期,那么它就不能被使用。此外,JWT还依赖于密钥,如果密钥丢失或被盗,那么JWT就无法使用。

      3. 基于用户ID的JWT:一些JWT是由用户ID生成的,这使得攻击者可以轻松地欺骗JWT生成器,使其认为用户已经重新生成了JWT。为了解决这个问题,建议使用基于令牌的JWT,这样攻击者需要生成一个新的JWT,而不是使用已经生成的JWT。

      4. 隐私问题:JWT生成和使用的过程中,可能会涉及到用户的一些敏感信息,例如,用户ID和密码。为了保护用户的隐私,建议使用加密技术来保护这些信息,例如,使用AES算法对用户ID进行加密。

      5. 跨站请求伪造(CSRF):攻击者可能会伪造一个来自用户的请求,以获取JWT。为了防止这种情况,建议使用会话管理来保护JWT,例如,使用Redis存储JWT的过期时间,当令牌过期时,会自动删除JWT。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部