1. 问题描述
在长期有效的 cookie 中存储敏感数据, 可能会导致机密性被破坏或帐户受到损害
2. 问题场景
大多数 Web 编程默认创建非持久 cookie, 这些 cookie 只驻留在浏览器内存中 (cookie 不会写入磁盘), 并在浏览器关闭时丢失,程序员可以指定 cookie 在浏览器会话之间被持久化, 直到某个未来的日期, 这样的 cookie 被写入磁盘, 并在浏览器会话和计算机重启时保存下来
如果私人信息被存储在长期有效的 cookie 中, 攻击者就会有更长的时间来窃取这些数据
特别是因为长期有效的 cookie 通常被设置为在遥远的未来过期,当用户与站点交互时, 通常使用长期有效的 cookie 来对用户进行概要分析, 根据对这些跟踪数据的处理, 有可能使用长期有效的 cookie 来侵犯用户的隐私
下面的代码将 cookie 设置为 10 年过期
Cookie cookie = new Cookie("token", token);
cookie.setMaxAge(60 * 60 * 24 * 365 * 10);
3. 修复方案
cookie 的有效期还是需要设置 (如果不设置有效期, 只要浏览器不关闭会一直有效,这样是不安全的), cookie 有效时间建议设置为几小时 (可以根据业务需要调整)
设置有效期为 3 小时
Cookie cookie = new Cookie("token", token);
cookie.setMaxAge(60 * 60 * 3);