session-id-in-url
CriticalWhat 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
How QAOS detects it
The agent inspects the current URL after every navigation for parameters that resemble session identifiers:sessionid, session, sid, token, jsessionid, PHPSESSID, and similar patterns.
Examples
How to fix
Store session identifiers exclusively in cookies with theHttpOnly 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.
weak-session-cookie-entropy
HighWhat it is
Session or authentication cookies have values with low entropy — they are short, purely numeric, timestamp-based, or follow a predictable pattern. This indicates the server uses a weak random number generator for session token creation.Why it matters
Low-entropy session tokens can be brute-forced or predicted. An attacker who can enumerate or guess valid session IDs can take over any active session without credentials.How QAOS detects it
The agent performs a statistical analysis of session cookie values — checking length, character diversity, Shannon entropy, and whether the value matches patterns like timestamps, sequential integers, or base64-encoded short data.Examples of weak tokens
How to fix
Use a cryptographically secure random generator with at least 128 bits of entropy (ideally 256):Math.random(), rand(), timestamp-based tokens, or any deterministic function.
cookies-missing-httponly
HighWhat it is
Session or authentication cookies are set without theHttpOnly flag, meaning client-side JavaScript can read them via document.cookie.
Why it matters
If your application has any XSS vulnerability (even a minor one), an attacker can steal session cookies using a simple JavaScript payload:HttpOnly flag is a critical defense-in-depth measure that prevents this escalation path.
How QAOS detects it
The agent inspects all cookies set by the application and checks for the presence of theHttpOnly attribute, specifically on cookies whose names suggest they are session or authentication tokens.
Example
How to fix
Set theHttpOnly flag on all session and authentication cookies:
session-id-in-hidden-field
HighWhat 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
How to fix
Never embed session identifiers in the DOM. Store session state server-side and reference it exclusively throughHttpOnly 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.