Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Golang: https, jwt, api

Как обеспечить безопасность данных при передаче через API (HTTPS, шифрование, JWT)?

Проверяет знание методов защиты данных в сетевых взаимодействиях.

Короткий ответ

  1. HTTPS: Шифрует трафик между клиентом и сервером (TLS-сертификаты).

  2. JWT: Токены для аутентификации (проверка подписи на сервере).

  3. Шифрование данных: Для конфиденциальных полей (AES-256).

  4. Заголовки CORS: Ограничение доступа к API с других доменов.

Длинный ответ

Реализация в Go:

  1. HTTPS:

    func main() {
        	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
            	w.Write([]byte("Защищено!"))
        	})
        	// Запуск с TLS-сертификатами
        	http.ListenAndServeTLS(":443", "cert.pem", "key.pem", nil)
    }
  2. JWT-аутентификация:

    // Генерация токена
    token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
        	"user": "alice",
        	"exp":  time.Now().Add(24 * time.Hour).Unix(),
    })
    tokenString, _ := token.SignedString([]byte("секретный_ключ"))
    
    // Проверка токена в middleware
    func AuthMiddleware(next http.Handler) http.Handler {
        	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
            	token, _ := jwt.Parse(r.Header.Get("Authorization"), /* проверка */)
            	if !token.Valid {
                		w.WriteHeader(http.StatusUnauthorized)
                		return
            	}
            	next.ServeHTTP(w, r)
        	})
    }
  3. Шифрование данных:

    func encrypt(data []byte, key []byte) ([]byte, error) {
        	block, _ := aes.NewCipher(key)
        	// ... шифрование AES-GCM
    }

Дополнительные меры:

  • CORS:

    // Разрешить запросы только с example.com
    w.Header().Set("Access-Control-Allow-Origin", "https://example.com")
  • Rate Limiting: Ограничение запросов от одного IP.

Вывод: Всегда используйте HTTPS. Для аутентификации — JWT, для секретных данных — дополнительное шифрование.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Golang

    Golang

Ключевые слова

#https

#jwt

#api

Подпишись на Golang Developer в телеграм