Почему небезопасно использовать verify=False и синхронный requests в FastAPI?

Использование verify=False в requests отключает проверку SSL-сертификатов, что делает соединение уязвимым к атакам "man-in-the-middle" — злоумышленник может перехватить или изменить данные.

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

Что ответить на собеседовании

Использование verify=False в requests отключает проверку SSL-сертификатов, что делает соединение уязвимым к атакам "man-in-the-middle" — злоумышленник может перехватить или изменить данные.

Подробный разбор

Ответ с пояснениями

Использование verify=False в requests отключает проверку SSL-сертификатов, что делает соединение уязвимым к атакам "man-in-the-middle" — злоумышленник может перехватить или изменить данные.

В контексте FastAPI, если вы делаете синхронные HTTP-запросы через requests внутри асинхронных обработчиков, это блокирует event loop, снижая производительность и масштабируемость приложения.

Почему это плохо:

  • Безопасность: verify=False отключает проверку подлинности сервера, что опасно в продакшене.
  • Производительность: синхронные вызовы блокируют асинхронный поток, задерживая обработку других запросов.

Рекомендуется:

  • Всегда использовать проверку SSL (не ставить verify=False), либо корректно настроить сертификаты.
  • Для асинхронных запросов использовать библиотеки типа httpx с async поддержкой, чтобы не блокировать event loop.

Пример асинхронного запроса с httpx:

import httpx

async def fetch_data():
    async with httpx.AsyncClient() as client:
        response = await client.get('https://example.com')
        return response.text

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее