python / intermediate
Snippet
Benutzerdefinierte Middleware zur Einschränkung von HTTP-Anfrage-Methoden
Django-Middleware fängt Anfragen ab, bevor sie Views erreichen. Die Methode-Inspektion in callable Middleware ermöglicht eine zentrale Sicherheitsprüfung gegen unzulässige HTTP-Verben.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
12
from typing import Callablefrom django.http import HttpRequest, HttpResponse, HttpResponseNotAllowedclass RestrictHttpMethodsMiddleware:def __init__(self, get_response: Callable[[HttpRequest], HttpResponse]) -> None:self.get_response = get_responseself.disallowed_methods = {"TRACE", "CONNECT"}def __call__(self, request: HttpRequest) -> HttpResponse:if request.method in self.disallowed_methods:return HttpResponseNotAllowed(list(self.disallowed_methods))return self.get_response(request)
django
Erklärung
1
class RestrictHttpMethodsMiddleware:
Deklariert eine klassenbasierte Django-Middleware unter Verwendung der standardmäßigen Callable-Struktur.
2
def __init__(self, get_response: Callable[[HttpRequest], HttpResponse]) -> None:
Initialisiert die Middleware-Instanz und empfängt den nächsten Handler in der Request-Kette.
3
def __call__(self, request: HttpRequest) -> HttpResponse:
Führt die Logik pro eingehender Anfrage beim Durchlaufen des Middleware-Stacks aus.
4
if request.method in self.disallowed_methods:
Prüft, ob die HTTP-Methode der Anfrage eingeschränkten Verben wie TRACE oder CONNECT entspricht.
5
return HttpResponseNotAllowed(list(self.disallowed_methods))
Bricht die Anfrageverarbeitung ab und antwortet mit HTTP 405, falls eine verbotene Methode verwendet wird.