Fix: legal-request-Honeypot nickt Bots wieder still ab

Die size:0-Regeln liefen vor dem Honeypot-Zweig: ein gefuelltes Feld
produzierte einen Validierungsfehler (verraet die Falle), der stille
done()-Pfad war tot. Honeypot-Check jetzt vor der Validierung; Test
schaerft das Soll (kein Fehler, normaler Erfolgs-Redirect).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-03 08:14:52 +00:00
parent 9875e7b6e1
commit 4e4aff115d
2 changed files with 12 additions and 10 deletions

View file

@ -39,6 +39,13 @@ class LegalRequestController extends Controller
{
$release = $this->resolvePublishedRelease($slug);
// Bot: ein ausgefülltes Honeypot-Feld → still und neutral abnicken,
// nichts speichern. Bewusst VOR der Validierung — eine size:0-Regel
// würde mit ihrer Fehlermeldung einem Bot die Falle verraten.
if (filled($request->input('website')) || filled($request->input('homepage'))) {
return $this->done($release);
}
$validated = $request->validate([
'type' => ['required', Rule::enum(LegalRequestType::class)],
// E-Mail für DSGVO/Persönlichkeitsrecht nötig (Rückmeldung); bei
@ -51,19 +58,10 @@ class LegalRequestController extends Controller
'nullable', 'email', 'max:255',
],
'message' => ['required', 'string', 'min:10', 'max:5000'],
// Honeypots: müssen leer bleiben (versteckte Felder, nur für Bots).
'website' => ['nullable', 'size:0'],
'homepage' => ['nullable', 'size:0'],
]);
$type = LegalRequestType::from($validated['type']);
// Bot: ein ausgefülltes Honeypot-Feld → still und neutral abnicken,
// nichts speichern (keine Fehlermeldung, die einem Bot etwas verrät).
if (filled($request->input('website')) || filled($request->input('homepage'))) {
return $this->done($release);
}
$this->ensureNotRateLimited($release);
// Bremse: max. 1 offene Anfrage pro PM + Typ (nicht hart gesperrt – andere