首页 文章

与表单身份验证相比,JWT在不安全网络上的安全性

提问于
浏览
0

我正在尝试学习JSON Web令牌(JWT),并使用Implement OAuth JSON Web Tokens Authentication in ASP.NET Web API and Identity 2.1 – Part 3中的文章系列成功完成了一个示例 .

我读到了 JWT 并且喜欢使用https://jwt.io/中存在的JWT调试器来解码令牌 . 令牌未加密 - 只是编码 .

我有一个使用 forms authentication 的现有ASP.Net网站 . 我打算将其作为Web API的一些功能,并使用JWT进行身份验证 .

由于JWT可以被解码,如果某个恶意黑客可以读取令牌,他们可以获得身份验证并获得对资源的访问权限 .

Question 1 与ASP.Net形式认证相比,JWT的安全性如何?它是更多,更少或相等的安全网络和不安全网络?

Question 2 文章"How to Avoid Session Hijacking in Web Applications"说明了在 Application_AcquireRequestState 事件中验证登录期间发出session_id的IP地址的方法,以及所有后续请求的IP地址 . 如果会话ID存储在服务器中,则可以执行此操作 .

如果我还将原始IP地址存储在JWT令牌上,是否有办法确保令牌不是伪造的(以验证每个请求中的原始IP地址和当前IP地址)?

References

1 回答

  • 1

    JWT的内容可见性不是安全问题,因为内容受到保护以防数字签名的更改 . 但是,如果攻击者可以访问令牌,他可以冒充用户 . 因此,如果可行则使用HTTPS并将令牌保存在安全存储中

    如果要隐藏内容 . JWT可以与JWE加密一起使用 .

    表单身份验证可能会在cookie中使用不透明令牌来维护服务器会话 . 因此,如果您将JWT存储在标有HTTPOnly的cookie中,我会说安全级别或多或少相同 . 请注意,Cookie容易受到CSRF攻击 . 但是,将JWT存储在localStorage中或使用javascript访问它将容易受到XSS攻击 .

    在任何情况下,您都需要额外的安全措施,因此没有神奇的解决方案,并且取决于上下文

    已编辑问题2(避免会话劫持验证IP地址

    只需将源IP地址添加到令牌,该技术就可以应用于JWT . 由于令牌已签名,您可以将源TCP IP地址与令牌地址进行比较以验证令牌源 .

    请注意,完全可以使用虚假的发件人IP发送数据,但回复将转到发件人使用的虚假IP地址,因此他们永远不会联系到攻击者 .

    但验证客户端IP有缺点,例如在移动设备中IP可以在用户从wifi切换到4G时发生变化,然后当前令牌将被拒绝

相关问题