GET /documents listet alle Dokumente und machte damit jede UUID auffindbar — das Zugriffsmodell "unerratbarer Link" waere hinfaellig. Der Endpunkt verlangt jetzt HTTP Basic; alles andere bleibt bewusst offen. Ohne konfigurierten Hash ist die Liste ausdruecklich gesperrt (denyAll), nicht offen: Ein vergessener Umgebungswert gaebe sonst jede UUID preis, und niemandem fiele es auf, weil alles funktioniert. Bewusst als Regel und nicht bloss als zufaelliges Passwort, das niemand kennt — der Unterschied ist pruefbar: Mit dem Zufallspasswort blieb die Gegenprobe stumm, mit denyAll faellt genau die danach benannte Zusicherung. Die Sperre nach Fehlversuchen ist global statt je Adresse: Es gibt genau ein Passwort, und hinter dem Reverse Proxy der Zielumgebung saehe der Server ohnehin fuer alle dieselbe Adresse. Preis benannt (D76-Nachtrag 6). 135 Tests. Gegenproben: Schutz entfernt, Sperre entfernt, Voreinstellung geoeffnet -> es faellt jeweils genau die danach benannte. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
28 lines
687 B
YAML
28 lines
687 B
YAML
spring:
|
|
datasource:
|
|
url: jdbc:h2:mem:editor-test;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUE;DEFAULT_NULL_ORDERING=HIGH;DB_CLOSE_DELAY=-1
|
|
username: sa
|
|
password: ""
|
|
driver-class-name: org.h2.Driver
|
|
jpa:
|
|
hibernate:
|
|
ddl-auto: validate
|
|
open-in-view: false
|
|
liquibase:
|
|
change-log: classpath:db/changelog/db.changelog-master.sql
|
|
|
|
threads:
|
|
virtual:
|
|
enabled: true
|
|
|
|
werkbaum:
|
|
live-editing:
|
|
# Kurz, damit die Behavior-Tests nicht auf die Produktionswerte warten.
|
|
max-wait: 5s
|
|
|
|
master-password:
|
|
# {noop} = Klartext. Nur im Test; in Produktion steht hier {bcrypt}$2a$...
|
|
hash: "{noop}test-geheim"
|
|
max-attempts: 3
|
|
lockout: 2s
|