Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+661новая вакансия за сутки·58 731вакансия открыта сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 712
РезюмеAIПодготовкаСтатьи
ТарифыТарифы
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 393 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python11 079
  • Облачные технологии8 824
  • QA вакансии2 977
  • Android1 395
  • Инженер данных1 032
  • Продакт-менеджер351

Разработка

  • Backend вакансии1 342
  • iOS1 307
  • AI вакансии660
  • Fullstack вакансии524
  • Frontend вакансии465
  • Mobile вакансии28

По стеку

  • Go6 622
  • Java3 670
  • Kotlin1 199
  • Node.js1 190
  • Rust1 181
  • .NET780
  • PHP329
  • C++301
  • C#211

DevOps и инфраструктура

  • Kubernetes5 251
  • Linux-инфраструктура4 138
  • DevOps вакансии3 024
  • Terraform / IaC2 834
  • Мониторинг и Observability1 406
  • CI/CD917
  • SRE389
  • Кибербезопасность40

Аналитика и данные

  • Аналитик данных586
  • Бизнес-аналитик487
  • Data Scientist458
  • Системный аналитик75

Другие направления

  • Проджект-менеджер114
  • UI/UX дизайн74
  • Ручное тестирование14

По регионам

  • Вакансии в США31 201
  • Вакансии в Европе11 507
  • Работа в России3 630
  • Вакансии в Канаде2 546

По формату

  • Удалённые вакансии47 761
  • Релокация в США31 201
  • Гибридная работа7 699
  • Офисная работа6 071

По уровню

  • Senior вакансии27 027
  • Middle вакансии12 284
  • Junior вакансии4 495

Сейчас нанимают

Все компании
  • Wise196 вакансий
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis48 вакансий
  • Spotify38 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме FiberВсе вопросы
FiberMiddleТеория

Как валидировать и ограничивать размер request body, чтобы не получить DoS?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

BodyLimit в fiber.Config ограничивает размер тела глобально; для стриминга добавляйте io.LimitReader явно. Rate-limiting middleware предотвращает DoS на уровне числа запросов.

Глобальный лимит тела через fiber.Config

Самый простой способ защититься от DoS с огромным телом — установить BodyLimit при создании приложения. Fiber возвращает 413 Request Entity Too Large до того, как тело попадает в хендлер:

app := fiber.New(fiber.Config{
	BodyLimit: 1 * 1024 * 1024, // 1 MB по умолчанию
})

Переопределение лимита для конкретного маршрута

Иногда один эндпоинт (upload) требует большего лимита, а остальные — меньшего:

// Глобально: 1 MB
app := fiber.New(fiber.Config{
	BodyLimit: 1 * 1024 * 1024,
})

// Для upload: переопределяем через RequestCtx
app.Post("/upload", func(c *fiber.Ctx) error {
	// Увеличиваем лимит только для этого запроса
	c.Request().SetMaxBodySize(50 * 1024 * 1024)

	file, err := c.FormFile("file")
	if err != nil {
		return c.Status(fiber.StatusBadRequest).
			JSON(fiber.Map{"error": "invalid file"})
	}
	if file.Size > 10*1024*1024 {
		return c.Status(fiber.StatusRequestEntityTooLarge).
			JSON(fiber.Map{"error": "file too large"})
	}
	return c.SaveFile(file, "./uploads/"+file.Filename)
})

Валидация Content-Length заранее

app.Use(func(c *fiber.Ctx) error {
	const maxSize = 1 * 1024 * 1024 // 1 MB
	if c.Request().Header.ContentLength() > maxSize {
		return c.Status(fiber.StatusRequestEntityTooLarge).
			JSON(fiber.Map{"error": "request too large"})
	}
	return c.Next()
})

Rate-limiting для защиты от DoS

import "github.com/gofiber/fiber/v2/middleware/limiter"

// Глобальный rate-limit: 100 запросов/минуту на IP
app.Use(limiter.New(limiter.Config{
	Max:        100,
	Expiration: 1 * time.Minute,
	KeyGenerator: func(c *fiber.Ctx) string {
		return c.IP() // используем реальный IP (с TrustedProxies)
	},
	LimitReached: func(c *fiber.Ctx) error {
		return c.Status(fiber.StatusTooManyRequests).
			JSON(fiber.Map{"error": "rate limit exceeded"})
	},
}))

// Более жёсткий лимит на auth эндпоинты
app.Post("/auth/login", limiter.New(limiter.Config{
	Max:        5,
	Expiration: 1 * time.Minute,
}), loginHandler)

Защита от slow-body атак (ReadTimeout)

app := fiber.New(fiber.Config{
	BodyLimit:   1 * 1024 * 1024,
	ReadTimeout: 5 * time.Second, // клиент должен отправить тело за 5 сек
})

Подводные камни

  • BodyLimit не работает для chunked encoding без Content-Length: если клиент не посылает заголовок Content-Length, BodyLimit срабатывает только при достижении лимита при чтении — добавьте ReadTimeout как второй рубеж.
  • SetMaxBodySize в хендлере слишком поздно: вызов после частичного чтения тела не имеет эффекта; вызывайте до любого чтения.
  • Rate-limit по IP без TrustedProxies: без корректной настройки все запросы через балансировщик имеют один IP — rate-limit работает как глобальный, а не per-client.
  • Отсутствие лимита на количество полей формы: multipart/form-data с миллионами полей вызывает OOM; ограничивайте количество частей.
  • В памяти vs. диск для больших файлов: Fiber/Fasthttp буферизует тело в памяти; для файлов > 10 MB используйте стриминг напрямую в хранилище.
  • Content-Type без валидации: злоумышленник может послать JSON-тело с Content-Type: multipart/form-data; проверяйте Content-Type явно в middleware.

Частые вопросы на собеседовании

  • В каких backend-проектах Fiber (Go framework) является сильным выбором, а где лучше выбрать более простой или другой стек?
  • Как понять, что проблема в сервисе связана с Fiber (Go framework), а не с базой, сетью, инфраструктурой или бизнес-логикой?
  • Проект на Fiber (Go framework) вырос из MVP в большой production-сервис. Какие проблемы архитектуры и сопровождения вы ожидаете увидеть?
  • Представьте, endpoint на Fiber (Go framework) иногда отвечает за секунды вместо миллисекунд. Как вы будете искать причину?

Типичные ошибки

  • Отвечать определением без production-сценария.
  • Не называть runtime boundary, security boundary или failure mode.
  • Игнорировать версию API, observability и тестовую проверку.

Что проверяет интервьюер

  • Объясняет механизм своими словами и без выдуманных API.
  • Называет реальные риски, диагностику и критерий корректности.
  • Связывает ответ с текущей документацией и миграционными ограничениями.

Как вы знаете этот вопрос?

Проверить себя по теме Fiber →

Источники

  • https://docs.gofiber.io/next/extra/faq/
  • https://docs.gofiber.io/guide/go-context/

Связанные темы

Fiberfiber-productionrisk-analysistechnical-depth