whileFalse
whileFalse
这家伙很懒,什么也没写!

注册于 4年前

回答
2
文章
0
关注者
0

我理解,每个算法分析程序应该具备独立于其他算法的密钥,此密钥不依赖于特定用户,且可以解密所有用户的数据。

  1. 为每个算法分析程序创建独立的密钥,可以是非对称加密,称为该算法的主密钥。应安全地保存该算法主密钥。考虑使用独立的数据库,并合理设置权限。

每个算法分析程序还可以设置自己的加密上下文字符串。这可以一部分保存在程序代码中,另一部分在运行时以环境变量等参数提供。该字符串参与加密。这可以保证仅攻破数据库也不能直接拿到主密钥。

  1. 每个用户在注册时随机创建一个对称加密密钥,称为该用户的数据密钥。该密钥用于加密该用户的数据,并且不得将该密钥明文写入数据库。
  2. 使用每个算法主密钥加密用户的数据密钥,将加密结果写入数据库中各个算法独立的表中。
  3. 使用每个用户在注册时指定的密码或密码的哈希加密该用户的数据密钥,并将经用户密码加密过的数据密钥写入数据库。注意此加密数据密钥不应用于验证用户登录。用户每次更改密码,应更新此加密数据密钥。
  4. 用户登录后,将用户密码加密过的数据密钥传输至用户前端。

“每次请求会续期” 这就是问题所在。

JWT 和 Session 的本质区别是什么?是 JWT 设计目的是“不需要中央服务器即可验证有效性”;签发在中央服务器,验证在业务服务器,不需要和签发服务器交互。由于其本质是离线验证,因此无法吊销。有那些个闲人搞出来 JWT 吊销机制完全破坏了这个设计目的,纯属闲的,直接用 Session 不好么。

那么如果不用那些个闲的卵疼的吊销机制,JWT 就只能使用“拒绝续期”机制。把 JWT 有效期设置得短一点,然后要求客户端频繁去「中央服务器」续期。当身份窃取时就拒绝续期。

而 LZ 是“每次请求会续期”,这说明什么?说明业务服务器能续期啊!这种行为完全破坏了续期机制的意义,还不如设置一个一百年的有效期,省得麻烦。

发布
问题