Таймауты http.Server и slowloris
Вопрос
Какой таймаут сервера прежде всего защищает от клиентов, которые бесконечно медленно присылают заголовки?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
WriteTimeoutIdleTimeouthttp.Client.TimeoutReadHeaderTimeoutправильный ответ
Разбор
Атака slowloris держит тысячи соединений, присылая заголовки по байту. ReadHeaderTimeout ограничивает время чтения заголовков (ReadTimeout ограничивает и тело, но мешает медленной загрузке файлов). WriteTimeout ограничивает запись ответа, IdleTimeout время простоя keep-alive между запросами, а клиентский таймаут к серверу не относится. http.ListenAndServe без своего Server не ставит ни одного таймаута, поэтому линтеры (gosec) на него ругаются.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «net/http и middleware»
- Статистика access-логов: ошибки и p95 на Go
- Разбор сырого HTTP/1.1 запроса на Go
- Разбор query-строки URL с декодированием на Go
- Маршрутизатор с параметрами пути в стиле ServeMux
- Rate limiter на токен-бакете для middleware на Go
- Зачем закрывать resp.Body
- Таймаут http.DefaultClient
- Обработчики net/http и горутины