关于智威汤逊的问题



所以我目前尝试使用nodejs jwt cookie设置"记住我"功能。 在这里,我找到了一个加密cookie的示例。我也读了他们的介绍。现在我计划使用这个中间件进行 express,以存储用于识别 mysql 数据库的user_id。
我的问题是:

  • 在 jwt 站点上,当我更改机密时,只有一个调试器,如果使用机密加密有效负载,签名更改不会更安全吗?
  • 秘密应该有多少
  • 个字符不是暴力破解的 512, 1024 2048?
  • 秘密蛮力有多快?如果暴力破解速度很快,应该多久更换一次?
  • 使用上述模块保护令牌的最佳做法是什么?还有如何设置令牌(使用示例仅显示如何读取(?

我目前主要担心的是,当有人可以制作代币时,他可以设置自己的user_id并可以访问任何帐户。如果有人能为我澄清这一点,我会很高兴。

问:在 jwt 站点上,当我更改密钥时,有一个调试器,只有如果使用密钥加密有效负载,签名更改不会更安全?

JWT 的主要要求是它经过数字签名。 如果您将敏感数据放在 JWT 中,那么您还需要对其进行加密。 但我强烈建议您不要将敏感数据放在那里,因为如果用户丢失了他的 JWT 令牌,那么您将希望将损害降至最低。 例如,在OWASP果汁店Web应用程序(故意不安全的Web应用程序,目的是教人们安全(中,他们将用户的密码哈希放在令牌/中。 这允许攻击者通过跨站点脚本恢复用户密码,如本博客中所述。

问:密钥必须有多少个字符不是暴力破解 512, 1024 2048?

取决于您使用的 JWT 算法。 如果您使用的是 HMAC,那么 256 位(32 字节(就足够了,远远超过您的需求。 如果您使用的是 RSA,则 2048 位(256 字节(是最佳做法。

问:秘密暴力破解的速度有多快?如果暴力破解速度很快,应该多久更换一次?

假设量子计算机没有成为现实,那么在宇宙的生命周期中使用地球上的所有计算机并不是蛮力的(如果量子计算机确实成为现实,那么所有的赌注都落空了(。 密码学家是非常聪明的人,他们以这种方式设计这些算法。 例如,如果您想了解 RSA 安全性,请首先查看通用数字字段筛子和攻击它的运行时间。:-) 这不是蛮力——蛮力是一种缓慢而愚蠢的攻击——而是一种基于模数性质的智能算法。

因此,总而言之,请为您选择的算法使用建议的密钥大小,并且不要担心轮换密钥,除非您有理由相信它已泄露。 如果只有一个地方需要验证令牌,并且该地方与生成令牌的地方相同,那么 HMAC 是一个不错的选择。 但是,否则最好使用像 RSA 这样的公钥算法。

问:使用上述模块保护令牌的最佳做法是什么?还有如何设置令牌(使用示例仅显示如何读取(?

由于您将其放入cookie中,请遵循cookie的常规最佳实践(安全,HttpOnly等(。

相关内容

  • 没有找到相关文章

最新更新