主要观点:
- 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 系统,但存在一些问题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。