session-id-in-url
Critical What it is Session identifiers appear in the URL as query parameters (e.g.,?sessionid=abc123, ;jsessionid=xyz), making them visible in browser history, server logs, referrer headers, and shared links.
Why it matters
A URL containing a session ID can be:
- Leaked through the HTTP
Refererheader to third-party sites - Stored in browser history and accessible to other users of the same machine
- Captured in server access logs
- Accidentally shared in a screenshot or copy-pasted link
sessionid, session, sid, token, jsessionid, PHPSESSID, and similar patterns.
Examples
HttpOnly and Secure flags set. Never pass session tokens through URLs. If you inherit a legacy system that uses URL-based sessions, migrate to cookie-based sessions and implement SameSite=Strict or SameSite=Lax.
session-id-in-hidden-field
High What it is Session identifiers are embedded in hidden form fields or client-accessible DOM elements (e.g.,<input type="hidden" name="session_id">), making them readable by any JavaScript on the page.
Why it matters
Hidden form fields are part of the DOM and accessible via JavaScript just like any other element. An XSS vulnerability anywhere on the page can extract the session ID from a hidden field and exfiltrate it to an attacker-controlled server.
How QAOS detects it
The agent scans the DOM for hidden input fields and client-side metadata whose names or values match session identifier patterns (session_id, token, auth, sid, etc.).
Examples
HttpOnly cookies that JavaScript cannot read. If you need to pass a CSRF token through a form field, use a separate, purpose-limited CSRF token rather than the session ID itself.