fix(quick-261009-p0m): Review-Befunde WR-01/02/04/05, IN-01/02/03/04 (Abbild-Bau, Semgrep im Container, Zeitbudget, ZAP-Haken)
- WR-01: prisma generate als eigener Schritt mit Pruefung im api-Abbild, Bau scheitert ohne Client; Startprobe als .gitea/scripts/image-start-check.sh versioniert - WR-02: Semgrep im offiziellen Container, per Digest angepinnt (kein pipx/PyPI mehr) - WR-04: Zeitbudget 1500 s, Limits je Werkzeug, Ergebniszeile sofort nach jedem Werkzeug - WR-05: Authorization-Ersetzung der ZAP-Pruefung nur fuer das Ziel - IN-01: yarn/npm per Platzhalter entfernt und Abwesenheit geprueft (api und web) - IN-02: Kommentar zu doppelten Kopfzeilen in next.config.ts richtiggestellt - IN-03: Berichtsordner Modus 700, Zugangsdaten nur als base64 (keine curl-Konfiguration) - IN-04: flacher Klon wird bei gitleaks als unvollstaendig gemeldet Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -8,10 +8,13 @@ Aufgaben:
|
||||
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.
|
||||
Skripts), wird eine Ersetzungsregel fuer den Kopf Authorization eingetragen --
|
||||
beschraenkt auf Adressen des Ziels (Schema, Host, Port). Andere Hosts (Weiterleitungen,
|
||||
eingebundene Fremdseiten, Zusatzdienste von ZAP) bekommen den Kopf nie.
|
||||
Der Wert steht nie in einem Aufruf oder einer Ausgabe.
|
||||
"""
|
||||
import os
|
||||
import re
|
||||
|
||||
|
||||
def zap_started(zap, target):
|
||||
@@ -21,6 +24,10 @@ def zap_started(zap, target):
|
||||
|
||||
auth = os.environ.get("ZAP_BASIC_AUTH")
|
||||
if auth:
|
||||
# Die Regel gilt nur fuer URLs, die mit der Ziel-Adresse beginnen (Java-Regex, die
|
||||
# ganze URL muss passen). Danach darf nur ein Pfad, eine Abfrage oder ein Anker
|
||||
# folgen -- so passt auch http://host:30001 nicht auf das Ziel http://host:3000.
|
||||
url_regex = re.escape(target.rstrip("/")) + r"(?:[/?#].*)?"
|
||||
zap.replacer.add_rule(
|
||||
description="basicauth",
|
||||
enabled=True,
|
||||
@@ -29,4 +36,5 @@ def zap_started(zap, target):
|
||||
matchregex=False,
|
||||
replacement=auth,
|
||||
initiators="",
|
||||
url=url_regex,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user