1. 问题描述
cookie 设置过宽的有效路径, 可以通过同一域名中的其他应用程序访问
2. 问题场景
开发人员经常将 cookie 设置有效路径为 "/"
可以访问, 这将向域名上上的所有 web 应用程序开放 cookie, 由于 cookie 通常携带会话标识符等敏感信息, 跨应用程序共享 cookie 可能导致一个应用程序的漏洞, 从而危及另一个应用程序
Cookie cookie = new Cookie("token", token);
cookie.setPath("/");
如果在同一个域名 test.com
上部署多个应用 A 和 B, 两个服务的访问路径分别是 test.com/A
和 test.com/B
, 的此时设置的 cookie 有效路径为 /
, 这样应用 A 和 B 都能获取对方的 cookie, 如果此时其中一个应用存在安全漏洞,会导致另外一个引用的 cookie 被窃取或篡改
3. 修复方案
将 cookie 的有效路径设置为当前应用的路径, A 应用的 cookie 的有效路径设置为 /A/
, B 应用的设置为 /B/
, 这样就不能获取到对方的 cookie
Cookie cookie = new Cookie("token", token);
cookie.setPath("/A/");