Konfiguration
Formularvalidierungsregeln werden pro Endpunkt in policy.yaml definiert:
# policy.yaml
paths:
- pattern: "/kontakt"
methods: ["POST"]
form:
forbid_extra_fields: true
fields:
- name: "email"
type: "email"
required: true
max_length: 255
- name: "name"
type: "string"
required: true
min_length: 2
max_length: 100
- name: "nachricht"
type: "string"
required: true
max_length: 5000
FORM-001PASS
Gültige Formularübermittlung
Beispielanfrage
curl -X POST -d "email=user@example.com&name=Max+Mustermann&nachricht=Hallo" http://localhost:8080/kontakt
Alle Pflichtfelder sind vorhanden und bestehen die Validierung. Die Anfrage wird an das Backend weitergeleitet.
FORM-002BLOCKIERT
Ungültiges E-Mail-Format
Beispielanfrage
curl -X POST -d "email=keine-email&name=Max&nachricht=Hallo" http://localhost:8080/kontakt
Erwartete Antwort
{"error": "Validierung fehlgeschlagen", "field": "email", "message": "Ungültiges E-Mail-Format"}
E-Mail-Felder werden gegen RFC 5322 Format validiert. Ungültige Formate werden abgelehnt.
FORM-003BLOCKIERT
Pflichtfeld fehlt
Beispielanfrage
curl -X POST -d "email=user@example.com&name=Max" http://localhost:8080/kontakt
Erwartete Antwort
{"error": "Validierung fehlgeschlagen", "field": "nachricht", "message": "Pflichtfeld fehlt"}
Pflichtfelder müssen vorhanden sein. Fehlende Pflichtfelder führen zu einem 400-Fehler.
FORM-004BLOCKIERT
Feld überschreitet maximale Länge
Beispielanfrage
curl -X POST -d "email=user@example.com&name=$(python3 -c 'print("A"*200)')&nachricht=Hi" http://localhost:8080/kontakt
Felder, die die konfigurierte Maximallänge überschreiten, werden abgelehnt, um Buffer-Overflow- und Speicherangriffe zu verhindern.
FORM-005BLOCKIERT
Unerwartetes Feld übermittelt
Beispielanfrage
curl -X POST -d "email=user@example.com&name=Max&nachricht=Hi&admin=true" http://localhost:8080/kontakt
Erwartete Antwort
{"error": "Unerwartetes Feld", "field": "admin"}
Mit forbid_extra_fields werden alle nicht definierten Felder abgelehnt. Dies verhindert Mass-Assignment-Schwachstellen.