.Net Core 3.1 中的 SessionMiddleware 使用 IDataProtector 加密随机生成的会话密钥。
session-key 是对存储在缓存中的项目集合的引用,这些项目可通过 ISession 获得。
源代码在这里:
相关位在第 91 行和第 96 行之间。
有很多关于设置 IDataProtection 的文档,但为什么首先要加密会话密钥?cookie 旨在在客户端和服务器之间安全地传输。存储在缓存中的实际会话数据未加密。加密随机生成的密钥似乎是多余的,并且需要开发人员设置 IDataProtection 以获取看似很小的价值(如果您已经不需要它来做其他事情)。