CORS 很愚蠢 - Kevin Cox

主要观点:

  • CORS 和浏览器的同源策略常被误解,需解释其含义及应对方法。
  • 关键问题是网页中隐式凭证的处理方式,过去浏览器允许跨域请求包含凭证,易引发攻击。
  • CORS 是缓解遗留错误的方法,虽提供保护但不足以解决问题,使用 cookies 的网站需采取行动。
  • 关键防御是确保隐式凭证不被不当使用,可通过设置服务器中间件等方式。
  • 深度防御包括使用显式凭证(如在 Authorization 头中传递认证令牌)和设置 SameSite Cookies。
  • CORS 策略可设置为简单的Access-Control-Allow-Origin: *等,不必过于具体。
  • 对现状不满,认为是为兼容旧网站所致,浏览器正走向顶级域名隔离,但方式不一致。

关键信息:

  • CORS 提供了跨域请求的策略,默认允许请求但不能读取结果,仍存在安全隐患。
  • 隐式凭证问题导致跨站攻击,如登录银行后在其他网站读取银行信息。
  • 防御措施包括设置服务器中间件忽略跨域请求中的隐式凭证,使用显式凭证和 SameSite Cookies。
  • CORS 策略简单设置可防止意外复用隐式凭证,不必过于严格。
  • 浏览器正朝顶级域名隔离发展,但方式和效果不明确。

重要细节:

  • 服务器中间件示例代码用于删除跨域请求中的 Cookie。
  • 显式凭证通过在 Authorization 头中传递令牌实现,适合多账户支持但不适合服务器渲染站点。
  • SameSite Cookies 可设置为 Lax 避免在跨域请求中包含,Strict 可避免首次跨域链接加载时出现登录状态丢失,但会导致跨站表单提交受限。
  • CORS 策略简单设置可防止其他站点进行匿名请求,避免产生虚假安全感和限制只读访问。
  • 浏览器的顶级域名隔离举措如 Firefox 的 State Partitioning、Safari 的 Tracking Prevention 和 Google 的 CHIPS 系统,但存在一些问题。
阅读 7
0 条评论