13571df994
- zap-baseline.sh: passive Aussenpruefung mit festgelegtem ZAP-Abbild, Ziel per ZAP_TARGET (Standard: oeffentliche Adresse von alpha), Anmeldedatei-Weg nur fuer den Ausnahmefall - zap-hooks.py: Spinne fuellt keine Formulare aus und sendet keine (POST=0 lokal bewiesen) - Sicherheitsprotokoll: Abschnitt Pruefung von aussen, erster Lauf direkt gegen die Anwendung (0 hoch, 2 mittel, 6 niedrig, 3 Info), Einordnung und Verlauf - Betriebsanleitung Kapitel 9: Schritt Pruefung von aussen; Entwicklungsanleitung: Abschnitt ZAP; CHANGELOG Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
"""zap-hooks.py -- Haken fuer die ZAP-Grundpruefung (quick-261009-p0m).
|
|
|
|
Wird von .gitea/scripts/zap-baseline.sh schreibgeschuetzt in den ZAP-Container
|
|
eingebunden und mit `--hook=` geladen. Nur Standardbibliothek.
|
|
|
|
Aufgaben:
|
|
1. Die klassische Spinne soll Formulare weder ausfuellen noch absenden. So bleibt
|
|
die Pruefung rein passiv: es werden nur Seiten abgerufen (GET), nie Daten
|
|
an die Anwendung geschickt (kein POST).
|
|
2. Nur wenn die Umgebungsvariable ZAP_BASIC_AUTH gesetzt ist (Anmeldedatei-Weg des
|
|
Skripts), wird ein Ersetzungsregel fuer den Kopf Authorization eingetragen.
|
|
Der Wert steht nie in einem Aufruf oder einer Ausgabe.
|
|
"""
|
|
import os
|
|
|
|
|
|
def zap_started(zap, target):
|
|
# Keine Formulare verarbeiten, keine Formulare absenden.
|
|
zap.spider.set_option_process_form(False)
|
|
zap.spider.set_option_post_form(False)
|
|
|
|
auth = os.environ.get("ZAP_BASIC_AUTH")
|
|
if auth:
|
|
zap.replacer.add_rule(
|
|
description="basicauth",
|
|
enabled=True,
|
|
matchtype="REQ_HEADER",
|
|
matchstring="Authorization",
|
|
matchregex=False,
|
|
replacement=auth,
|
|
initiators="",
|
|
)
|