概括
一旦用户登录到网站并验证了他的用户名/密码凭据并建立了活动会话,是否可以避免针对该用户的每个请求访问数据库?在会话生命周期内安全地验证后续请求,同时最小化数据库查询和其他内部网络流量的推荐方法是什么?
背景
在无状态 Web 应用服务器架构中,每个请求都不知道用户的任何先前活动,因此有必要针对来自该用户的每个请求查询数据库(通常通过查询存储在 cookie 中的会话 ID 和在请求标头中传输)。但是,如果一些基本信息被加密并存储在该会话 cookie 中,该 cookie 有足够的信息来验证用户的非敏感、不可编辑的请求怎么办?对于此类请求,您可以作为一个示例,在会话数据中加密并存储用户 ID 和尽可能唯一标识他的机器的内容(用户代理 + ip 地址)。用于加密数据的密钥可能每天都在变化,这使得任何黑客都难以在不同的机器上克隆会话数据。当 Session 过期时,您需要完全验证用户的凭据。事实是,入侵用户会话的最大威胁是有人使用他或她无人看管的用户计算机。我是否应该不担心这一点,让 Web 应用程序服务器和数据库之间的某种程度的缓存负责加快身份验证过程?虽然这似乎是不必要的优化,但它似乎是提高效率的成熟候选,因为每个请求都需要这个过程。感谢您的任何建议!我是否应该不担心这一点,让 Web 应用程序服务器和数据库之间的某种程度的缓存负责加快身份验证过程?虽然这似乎是不必要的优化,但它似乎是提高效率的成熟候选,因为每个请求都需要这个过程。感谢您的任何建议!我是否应该不担心这一点,让 Web 应用程序服务器和数据库之间的某种程度的缓存负责加快身份验证过程?虽然这似乎是不必要的优化,但它似乎是提高效率的成熟候选,因为每个请求都需要这个过程。感谢您的任何建议!