session-id-in-url
Critique Description Les identifiants de session apparaissent dans l’URL sous forme de paramètres de requête (ex. :?sessionid=abc123, ;jsessionid=xyz), les rendant visibles dans l’historique du navigateur, les journaux du serveur, les en-têtes de référent et les liens partagés.
Importance
Une URL contenant un ID de session peut être :
- Divulguée via l’en-tête HTTP
Referervers des sites tiers - Stockée dans l’historique du navigateur et accessible aux autres utilisateurs de la même machine
- Capturée dans les journaux d’accès du serveur
- Accidentellement partagée dans une capture d’écran ou un lien copié-collé
sessionid, session, sid, token, jsessionid, PHPSESSID et motifs similaires.
Exemples
HttpOnly et Secure définis. Ne transmettez jamais les jetons de session via des URLs. Si vous héritez d’un système legacy utilisant des sessions basées sur l’URL, migrez vers des sessions basées sur les cookies et implémentez SameSite=Strict ou SameSite=Lax.
session-id-in-hidden-field
Élevé Description Les identifiants de session sont intégrés dans des champs de formulaire cachés ou des éléments DOM accessibles côté client (ex. :<input type="hidden" name="session_id">), les rendant lisibles par tout JavaScript sur la page.
Importance
Les champs de formulaire cachés font partie du DOM et sont accessibles via JavaScript comme tout autre élément. Une vulnérabilité XSS n’importe où sur la page peut extraire l’ID de session d’un champ caché et l’exfiltrer vers un serveur contrôlé par un attaquant.
Comment QAOS le détecte
L’agent analyse le DOM pour les champs de saisie cachés et les métadonnées côté client dont les noms ou valeurs correspondent à des motifs d’identifiants de session (session_id, token, auth, sid, etc.).
Exemples
HttpOnly que JavaScript ne peut pas lire. Si vous devez transmettre un jeton CSRF via un champ de formulaire, utilisez un jeton CSRF séparé et à usage limité plutôt que l’ID de session lui-même.