Какие основные механизмы безопасности предоставляет FastAPI?

«Какие основные механизмы безопасности предоставляет FastAPI?» — вопрос из категории Безопасность, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

FastAPI включает несколько встроенных и рекомендуемых механизмов для обеспечения безопасности веб-приложений, основанных на открытых стандартах.

Ключевые механизмы:

  1. Аутентификация и авторизация через fastapi.security FastAPI предоставляет классы для реализации стандартных схем безопасности, таких как OAuth2 и HTTP Basic Auth. Это позволяет легко защитить эндпоинты.

    Пример с OAuth2 Password Bearer:

    from fastapi import Depends, FastAPI
    from fastapi.security import OAuth2PasswordBearer
    
    app = FastAPI()
    # Схема указывает, что токен нужно искать в заголовке Authorization: Bearer <token>
    oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/token")
    
    @app.get("/users/me")
    async def read_users_me(token: str = Depends(oauth2_scheme)):
        # Логика валидации токена и получения пользователя
        return {"token": token}
  2. Валидация данных с помощью Pydantic Автоматическая валидация всех входящих данных (из тела запроса, параметров пути, query-параметров) на основе моделей Pydantic. Это является первой линией защиты от множества атак, включая инъекции, так как данные приводятся к строго определенным типам.

  3. Управление CORS (Cross-Origin Resource Sharing) С помощью CORSMiddleware можно гибко настроить, каким внешним источникам (доменам) разрешено отправлять запросы к вашему API. Это критически важно для безопасности фронтенд-приложений.

    from fastapi.middleware.cors import CORSMiddleware
    
    app.add_middleware(
        CORSMiddleware,
        allow_origins=["https://your-frontend.com"],
        allow_credentials=True,
        allow_methods=["GET", "POST"],
        allow_headers=["Authorization"],
    )
  4. Хеширование паролей Хотя это не является частью самого фреймворка, официальная документация настоятельно рекомендует использовать библиотеку passlib для безопасного хеширования и верификации паролей с использованием современных алгоритмов, таких как bcrypt.

  5. Использование HTTPS FastAPI предназначен для работы за обратным прокси-сервером (например, Nginx или Traefik), который должен быть настроен для работы по HTTPS, обеспечивая шифрование трафика.