Formular-Validierung

20 Tests verifizieren Feldvalidierung, Typprüfung, Formatvalidierung und Längenbeschränkungen.

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.