User Story
As a user navigating to the login page,
I want login error messages displayed as plain text,
so that I can understand authentication issues without untrusted URL content executing in my browser.
Background
Login reads the error query parameter and renders it with dangerouslySetInnerHTML. This permits reflected XSS through a crafted login URL.
Acceptance Criteria
Scope
Included: safe rendering of login error query parameters and focused regression coverage.
Excluded: changes to authentication behavior, backend error contracts, and general HTML sanitization.
User Story
As a user navigating to the login page,
I want login error messages displayed as plain text,
so that I can understand authentication issues without untrusted URL content executing in my browser.
Background
Loginreads theerrorquery parameter and renders it withdangerouslySetInnerHTML. This permits reflected XSS through a crafted login URL.Acceptance Criteria
errormessage from the URL query string.<img src=x onerror=alert(1)>, is shown literally and does not create or execute HTML elements.dangerouslySetInnerHTMLis removed fromfrontend/src/components/Login.tsx.npm run lint --workspace=frontendandnpm run build --workspace=frontendcomplete successfully.Scope
Included: safe rendering of login error query parameters and focused regression coverage.
Excluded: changes to authentication behavior, backend error contracts, and general HTML sanitization.