Ответ
-
Аутентификация и авторизация
- Использование JWT, OAuth2.0, API-ключей.
- Пример с JWT в Go:
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{ "user_id": 123, "exp": time.Now().Add(time.Hour * 1).Unix(), }) tokenString, _ := token.SignedString([]byte("secret"))
-
HTTPS
Обязательное шифрование трафика через TLS/SSL. -
Валидация входных данных
- Проверка параметров запроса (например, с помощью
validator). - Защита от SQL-инъекций через prepared statements.
- Проверка параметров запроса (например, с помощью
-
Ограничение запросов (Rate Limiting)
- Использование middleware для контроля частоты запросов (например,
github.com/ulule/limiter).
- Использование middleware для контроля частоты запросов (например,
-
CORS
Настройка заголовков (Access-Control-Allow-Origin) для ограничения доменов. -
Защита от атак
- CSRF-токены, заголовки
X-Content-Type-Options,X-Frame-Options. - Регулярное обновление зависимостей.
- CSRF-токены, заголовки
Пример middleware для CORS:
func enableCORS(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Access-Control-Allow-Origin", "trusted-domain.com")
next.ServeHTTP(w, r)
})
}