跨站请求伪造(Cross-Site Request Forgery, CSRF) 攻击利用了浏览器在发起跨站请求时会自动携带用户凭证(如 Session Cookie)的特性,冒充受害用户执行未经授权的操作。
一、SameSite 属性与 Anti-CSRF Token 双重校验
http
Set-Cookie: session_id=xyz123; Path=/; Secure; HttpOnly; SameSite=Strictgo
// Go 中间件验证 Anti-CSRF Token
func CSRFMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.Method == "POST" || r.Method == "DELETE" {
token := r.Header.Get("X-CSRF-Token")
if !validateToken(token, r) {
http.Error(w, "Forbidden: Invalid CSRF Token", http.StatusForbidden)
return
}
}
next.ServeHTTP(w, r)
})
}