DokuSicherheit und Bereitstellung

Middleware und Sicherheit

Nexy läuft auf FastAPI und Starlette, daher gilt deren Middleware. Die häufigsten sind eine Zeile in nexyconfig.py.

nexyconfig.py
from nexy.core.models import NexyConfigModel  class NexyConfig(NexyConfigModel):    useCORS = {        "allow_origins": ["https://app.example.com"],        "allow_methods": ["GET", "POST"],        "allow_credentials": True,    }    useGZip = {"minimum_size": 1000}    useTrustedHost = {"allowed_hosts": ["example.com", "*.example.com"]}    useHTTPSRedirect = True    useSession = {"secret_key": "change-me"}

Jedes use*-Wörterbuch wird als Schlüsselwortargumente an die passende Starlette-Middleware übergeben: CORSMiddleware, GZipMiddleware, TrustedHostMiddleware, SessionMiddleware.

Ihre eigene Middleware

nexyconfig.py
from my_app.middleware import RequestIdMiddleware  class NexyConfig(NexyConfigModel):    useMiddlewares = [RequestIdMiddleware]

useMiddlewares nimmt ASGI-Middleware-Klassen an.

HTTPS

Stellen Sie HTTPS direkt mit useSslKeyfile und useSslCertfile bereit oder beenden Sie TLS an einem Reverse-Proxy und legen Sie useHTTPSRedirect fest. In der Entwicklung bleibt der Vite-Entwicklungsserver auf Loopback-HTTP hinter dem Nexy-Ursprung, sodass TLS ihn nie erreicht.

Checkliste für die Produktion

  • useDocs = False, wenn das OpenAPI-Schema nicht öffentlich sein soll.
  • useTrustedHost auf Ihre Domains eingestellt, um Host-Header-Angriffe zu blockieren.
  • useCORS mit expliziter Herkunft, niemals ["*"] zusammen mit Anmeldeinformationen.
  • Ein echtes secret_key für Sitzungen, gelesen aus der Umgebung.
  • An Client-Komponenten übergebene Requisiten werden von Nexy mit HTML-Escapezeichen versehen. Markieren Sie Benutzereingaben nicht als | safe in Vorlagen.

Wachen und Abhängigkeiten

Der Schutz pro Route verwendet FastAPI Abhängigkeiten. Ein dependencies.py in einem Routenverzeichnis gilt für alles darunter: siehe Abhängigkeiten. Verwenden Sie im modularen Router @UseGuard.

Nächste Schritte

Auf GitHub bearbeiten

Enter öffnet das Ergebnis, Esc schließt.