Sobes.tech
Back to questions
Junior — Middle
48

Какими способами осуществляется обеспечение безопасности в FastAPI?

Companies where asked
LuckyGroup

Answer from AI

sobes.tech AI

В FastAPI безопасность обеспечивается несколькими способами:

  • Аутентификация и авторизация: Использование OAuth2 с JWT-токенами или базовой аутентификации для проверки пользователей.
  • Зависимости безопасности: FastAPI позволяет внедрять зависимости, которые проверяют права доступа перед выполнением эндпоинтов.
  • Валидация данных: Благодаря Pydantic данные, поступающие в API, валидируются, что снижает риск уязвимостей.
  • HTTPS: Рекомендуется запускать приложение за прокси-сервером с поддержкой HTTPS для защиты данных при передаче.
  • CORS: Настройка Cross-Origin Resource Sharing для ограничения доступа к API с определённых доменов.

Пример использования OAuth2 с JWT в FastAPI:

from fastapi import FastAPI, Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer

app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")

def fake_decode_token(token):
    # Здесь должна быть логика декодирования и проверки токена
    if token == "fake-super-secret-token":
        return {"sub": "user"}
    raise HTTPException(status_code=401, detail="Invalid token")

async def get_current_user(token: str = Depends(oauth2_scheme)):
    user = fake_decode_token(token)
    return user

@app.get("/users/me")
async def read_users_me(current_user: dict = Depends(get_current_user)):
    return current_user