4b279eac70
- safe-next.ts: buildNextParam()/sanitizeNextPath() als reine, getestete Funktionen (Open-Redirect-Schutz) - middleware.ts: haengt next-Parameter an beide Login-Umleitungen (fehlendes Cookie, ungueltige Signatur) - login/page.tsx: springt nach erfolgreicher Anmeldung auf den bereinigten next-Wert Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
78 lines
2.4 KiB
TypeScript
78 lines
2.4 KiB
TypeScript
/**
|
|
* safe-next — Ruecksprung nach Anmeldung (quick-260917-gyd).
|
|
*
|
|
* Reine Funktionen ohne Node- oder DOM-APIs: die Datei wird sowohl von der
|
|
* Edge-Middleware (middleware.ts) als auch vom Client (login/page.tsx,
|
|
* header.tsx) importiert.
|
|
*
|
|
* `sanitizeNextPath()` ist der Open-Redirect-Schutz (T-gyd-01): sie laesst
|
|
* ausschliesslich sichere relative Pfade durch. Schema-Adressen wie
|
|
* `https://…` oder `javascript:…` scheitern bereits an der Regel "erstes
|
|
* Zeichen muss `/` sein" — eine zusaetzliche Liste bekannter Schemata ist
|
|
* deshalb nicht noetig und wird bewusst nicht gepflegt.
|
|
*/
|
|
|
|
const MAX_NEXT_PATH_LENGTH = 2048;
|
|
// Backslash, jegliches Whitespace sowie die Steuerzeichen 0-31 und 127
|
|
// (als Unicode-Escapes, nicht \x, weil safe-next.ts auch am Edge laeuft).
|
|
const FORBIDDEN_CHARS_RE = /[\\\s |