CORS 过滤器中不正确的 Vary 标头处理
日期
2017 年 10 月 5 日
描述
Play 的 CORS 过滤器会在某些配置中覆盖 Vary
标头,这在某些情况下会导致缓存中毒。这可能会将敏感信息暴露给未经授权的用户。
影响
当 CORS 过滤器用于匹配特定的一组来源(而不是允许任何来源)时,它会在响应中添加 Vary: Origin
标头。这样做也会覆盖 Vary
标头的任何现有值,使应用程序容易受到缓存中毒的攻击。
这只会影响在 CORS 过滤器过滤的操作中设置 Vary
标头的应用程序。
受影响的版本
- Play 2.6.0-2.6.5(在 2.6.6 中修复)
- Play 2.4.0-2.5.17(在 2.5.18 中修复)
解决方法
禁用 CORS 过滤器(如果不需要)或完全禁用任何依赖于向 Vary
添加其他标头的页面的缓存(Cache-Control: no-cache
)。
修复
此问题已在 Play 2.6.6 和 Play 2.5.18 中修复。