别把 SameSite 当万能药:CSRF 防护的令牌、来源校验与上线清单

浏览器请求穿过多层 CSRF 防线

用户已经登录的站点若用 Cookie 保存身份,浏览器会在满足条件时自动带上它。攻击者不必偷到 Cookie,只要诱导用户在另一个站点提交表单,就可能让目标站点误以为这是用户本人的转账、改邮箱或解绑操作。这就是跨站请求伪造(CSRF)。可靠的防护不是单押某个响应头,而是先缩小 Cookie 的跨站发送范围,再让服务端验证请求确实来自自己的页面。

Read More

HTTP 缓存别靠猜:Cache-Control、Vary 与条件请求实战

浏览器、CDN 与源站组成的 HTTP 缓存链路

页面明明更新了,用户却仍看到旧内容;接口接入 CDN 后,不同用户的数据竟然互相串了;静态资源每次访问都重新下载。此类问题往往不是“缓存失效了”,而是响应没有说清楚谁能缓存、能用多久,以及哪些请求对应同一份表示。HTTP 已提供完整的表达方式,关键是把策略写成可验证的响应契约。

Read More

异步任务别“放养”:用结构化并发收拢生命周期、取消与超时

结构化并发将异步任务约束在清晰的作用域中

一次请求同时查询库存、用户和优惠信息,看似只要创建三个异步任务就能提速。但如果请求已经失败,其中一个任务仍在后台写数据;或者主协程被取消,子任务却继续占用连接,并发就从性能工具变成了隐形故障源。结构化并发的核心不是某个库,而是一条所有权规则:任务必须属于一个明确的作用域,离开作用域前必须全部成功、失败或被取消。

Read More

断点下载不只是加个 Range:HTTP 字节范围、校验器与文件拼接

HTTP 断点下载的数据分片

大文件下载到 90% 时网络中断,最浪费的做法是从头再来。HTTP 字节范围请求允许客户端只取缺失部分,但可靠的断点下载绝不是把新响应直接追加到旧文件:服务器可能忽略范围,资源也可能已经更新。只有同时验证状态码、范围边界和资源版本,拼接后的文件才可信。

Read More