Ответ
FastAPI включает несколько встроенных и рекомендуемых механизмов для обеспечения безопасности веб-приложений, основанных на открытых стандартах.
Ключевые механизмы:
-
Аутентификация и авторизация через
fastapi.securityFastAPI предоставляет классы для реализации стандартных схем безопасности, таких как 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} -
Валидация данных с помощью Pydantic Автоматическая валидация всех входящих данных (из тела запроса, параметров пути, query-параметров) на основе моделей Pydantic. Это является первой линией защиты от множества атак, включая инъекции, так как данные приводятся к строго определенным типам.
-
Управление 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"], ) -
Хеширование паролей Хотя это не является частью самого фреймворка, официальная документация настоятельно рекомендует использовать библиотеку
passlibдля безопасного хеширования и верификации паролей с использованием современных алгоритмов, таких как bcrypt. -
Использование HTTPS FastAPI предназначен для работы за обратным прокси-сервером (например, Nginx или Traefik), который должен быть настроен для работы по HTTPS, обеспечивая шифрование трафика.