当前位置: 首页 > 知识库问答 >
问题:

JWT&OAuth2-服务器是否存储令牌?它们如何安全/黑客安全?

司空高义
2023-03-14

在安全和身份验证策略方面,我完全是个笨蛋。所以我阅读了这篇关于“基于令牌的身份验证”的文章:https://scotch.io/tutorials/the-ins-and-out-of-token-based-authentication

>

  • 我不明白为什么中间人(或黑客)不能看到客户端发送的令牌,并使用令牌冒充该客户端/个人来检索资源?在这种意义上,什么使基于JSON Web令牌/OAuth2的身份验证更安全?如果我们每次都使用一次只使用的令牌,我会理解即使黑客可以读取令牌,他也不能使用它来进行另一个请求。但是,由于令牌在过期之前保持不变,这又是一种安全的身份验证策略吗?

    服务器如何知道客户端发送的令牌是有效的,即服务器在登录期间与客户端交换的东西。服务器是否将生成的令牌存储在数据库或某个地方,并不断更新“上次访问时间戳”或其他东西,并不断删除last_html" target="_blank">accessed_time大于1小时之前的令牌,以在不活动1小时后使其过期?

  • 共有1个答案

    麹培
    2023-03-14

    我不明白为什么中间人(或黑客)不能看到客户机发送的令牌,并使用令牌冒充该客户机/个人来检索资源?

    JWT不能保护您免受中间人(MITM)攻击。如果攻击者获得有效令牌,则可以有效地模拟。即使内容是加密的。

    JWT应与SSL/TLS连接一起使用,以避免MITM

    在这种意义上,什么使基于JSON Web令牌/OAuth2的身份验证更安全?

    但是,由于令牌在过期之前保持不变,这又是一种安全的身份验证策略吗?

    读上面。你需要保护你的令牌不被盗取:主要使用HTTPS,或者减轻它的影响:用HttpOnly存储在Cookie中(如果你不需要访问客户端的JWT内容),设置短的过期时间,轮换令牌...

    服务器如何知道客户端发送的令牌是有效的,即服务器在登录期间与客户端交换的东西。

    它是不需要的。签名打包在令牌本身(ssss)中,因此可以说JWT是自包含的

    服务器有一个加密密钥或一个密钥对(公钥和私钥)。令牌用秘密密钥签名并验证(对于HMAC对称密钥),或者用私钥签名并用相应的公钥验证(对于RSA非对称密钥)。

     类似资料:
    • 我目前正在使用ReactJS构建一个单页应用程序。 我读到不使用的原因之一是因为XSS漏洞。 由于 React 会转义所有用户输入,现在使用 是否安全?

    • 如果黑客反编译了我的APK,他能从这个文件中看到我的API密钥吗?我不担心我的源代码存储库。我只是担心黑客能从我的APK上看到这个API密钥。我试图加密这个文件,并在运行时解密它,但有一些问题

    • 问题内容: 我目前正在使用reactjs构建一个单页面应用程序。我读到许多不使用localStorage的原因是由于XSS漏洞。由于React避开了所有用户输入,现在使用localStorage是否安全? 问题答案: 在大多数现代单页应用程序中,我们确实必须将令牌存储在客户端的某个位置(最常见的用例-在页面刷新后使用户保持登录状态)。 共有2个可用选项:Web存储(会话存储,本地存储)和客户端co

    • 我有一个角应用程序使用Firebase存储存储用户上传的照片文件。在用户上传一个文件之后,我调用getDownloadURL()(返回Observable)以获得完整的公共URL路径。我希望将URL字符串存储在Firestore数据库中,以便将其绑定到img html元素src属性,以便在web页面上显示。这将使我不必调用存储API来一个接一个地异步获取每个图像URL。 这个URL在查询字符串中包

    • 在阅读了以下内容之后:JWT:什么是好的密钥,以及如何将其存储在node.js/express应用程序中?关于如何存储“密钥”以分配JWT令牌。我有安全问题。我的数据(消息,用户名等...)将被加密(在数据库中),只有授权用户才能解密(基于他们的私钥)。由于JWT令牌是使用存储在服务器上的1个“秘密密钥”生成的,所以如果攻击者获得了“秘密密钥”并获得了数据库的控制权,则可以伪造令牌,因此可以绕过“