Sobes.tech
Junior — Middle

W jaki sposób można zagwarantować bezpieczeństwo interfejsów API?

sobes.tech AI

Odpowiedź od AI

Aby zapewnić bezpieczeństwo interfejsów API w Go (i ogólnie), stosuje się kilka głównych podejść:

  1. Uwierzytelnianie i autoryzacja — sprawdzanie, kto wykonuje żądanie i czy ma uprawnienia do wykonania danej akcji. Na przykład użycie JWT (JSON Web Tokens), OAuth2.

  2. Szyfrowanie ruchu — korzystanie z HTTPS w celu ochrony danych podczas przesyłania.

  3. Walidacja i sanitizacja danych wejściowych — aby zapobiec iniekcji SQL, XSS i innym atakom.

  4. Ograniczenie liczby żądań (rate limiting) — aby chronić przed atakami DDoS.

  5. Logowanie i monitorowanie — do śledzenia podejrzanej aktywności.

  6. Używanie bezpiecznych bibliotek i aktualizacja zależności — aby unikać znanych luk bezpieczeństwa.

Przykład najprostszej kontroli autoryzacji w Go:

func authMiddleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        token := r.Header.Get("Authorization")
        if token != "Bearer valid-token" {
            http.Error(w, "Unauthorized", http.StatusUnauthorized)
            return
        }
        next.ServeHTTP(w, r)
    })
}

Ten przykład demonstruje podstawową kontrolę tokena w nagłówku żądania.