Контекст: WebSocket хаб в handlers/websocket.go имел CheckOrigin: return true при пустом списке разрешённых origins — классическая уязвимость Cross-Site WebSocket Hijacking (CSWSH).
Суть: Злоумышленник может разместить на своём сайте скрипт, который откроет WebSocket к photoplaces.ru от имени жертвы и будет читать/отправлять данные.
CheckOrigin: func(r *http.Request) bool {
if len(h.allowedOrigins) == 0 {
return !h.isProd // В dev — разрешаем, в prod — блокируем
}
origin := r.Header.Get("Origin")
for _, o := range h.allowedOrigins {
if o == origin {
return true
}
}
return false
},
Дополнительные меры:
ALLOWED_ORIGINS в конфиге — единый источник истиныСвязанные заметки: [[backend-auth-security]], [[deploy-production-readiness]]
Источник: Code review: P0 fix в handlers/websocket.go
#security #backend #websocket #architecture