Проверяет знание методов защиты данных в сетевых взаимодействиях.
HTTPS: Шифрует трафик между клиентом и сервером (TLS-сертификаты).
JWT: Токены для аутентификации (проверка подписи на сервере).
Шифрование данных: Для конфиденциальных полей (AES-256).
Заголовки CORS: Ограничение доступа к API с других доменов.
Реализация в Go:
HTTPS:
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Защищено!"))
})
// Запуск с TLS-сертификатами
http.ListenAndServeTLS(":443", "cert.pem", "key.pem", nil)
}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)
})
}Шифрование данных:
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, для секретных данных — дополнительное шифрование.