A modern approach to preventing CSRF in Go
7 months ago
- #CSRF Protection
- #Go
- #Web Security
- Go 1.25 引入了 `http.CrossOriginProtection` 中间件,无需基于令牌的检查即可防范CSRF攻击。
- 该中间件通过检查 `Sec-Fetch-Site` 和 `Origin` 请求头来拒绝不安全的跨源请求。
- 其局限性包括:仅在现代浏览器中有效,且依赖HTTPS才能完全发挥作用。
- 强制使用TLS 1.3可确保浏览器支持必要请求头,从而消除大部分CSRF风险。
- SameSite cookie(`SameSite=Lax` 或 `Strict`)能为跨站请求伪造提供额外防护层。
- HTTPS、TLS 1.3、`http.CrossOriginProtection` 和 SameSite cookie的组合方案可将CSRF/CORF风险降至最低。
- 未缓解的风险包括:Firefox v60-69中的同站CORF攻击,以及非主流浏览器的潜在攻击。
- 免除基于令牌的CSRF检查的前提条件是:严格使用HTTPS,并假设所有用户均使用支持相关标准的浏览器。