session-id-in-url
CritiqueDescription
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é
Comment QAOS le détecte
L’agent inspecte l’URL actuelle après chaque navigation pour détecter des paramètres ressemblant à des identifiants de session :sessionid, session, sid, token, jsessionid, PHPSESSID et motifs similaires.
Exemples
Comment corriger
Stockez les identifiants de session exclusivement dans des cookies avec les flagsHttpOnly 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.
weak-session-cookie-entropy
ÉlevéDescription
Les cookies de session ou d’authentification ont des valeurs à faible entropie — ils sont courts, purement numériques, basés sur des horodatages ou suivent un motif prévisible. Cela indique que le serveur utilise un générateur de nombres aléatoires faible pour la création des jetons de session.Importance
Les jetons de session à faible entropie peuvent être forcés par force brute ou prédits. Un attaquant qui peut énumérer ou deviner des IDs de session valides peut prendre le contrôle de n’importe quelle session active sans identifiants.Comment QAOS le détecte
L’agent effectue une analyse statistique des valeurs de cookies de session — vérifiant la longueur, la diversité des caractères, l’entropie de Shannon et si la valeur correspond à des motifs comme des horodatages, des entiers séquentiels ou des données courtes encodées en base64.Exemples de jetons faibles
Comment corriger
Utilisez un générateur aléatoire cryptographiquement sécurisé avec au moins 128 bits d’entropie (idéalement 256) :Math.random(), rand(), les jetons basés sur des horodatages ou toute fonction déterministe.
cookies-missing-httponly
ÉlevéDescription
Les cookies de session ou d’authentification sont définis sans le flagHttpOnly, ce qui signifie que le JavaScript côté client peut les lire via document.cookie.
Importance
Si votre application a une vulnérabilité XSS (même mineure), un attaquant peut voler les cookies de session avec une simple charge utile JavaScript :HttpOnly est une mesure de défense en profondeur critique qui empêche ce chemin d’escalade.
Comment QAOS le détecte
L’agent inspecte tous les cookies définis par l’application et vérifie la présence de l’attributHttpOnly, spécifiquement sur les cookies dont les noms suggèrent qu’il s’agit de jetons de session ou d’authentification.
Exemple
Comment corriger
Définissez le flagHttpOnly sur tous les cookies de session et d’authentification :
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
Comment corriger
N’intégrez jamais les identifiants de session dans le DOM. Stockez l’état de session côté serveur et référencez-le exclusivement via des cookiesHttpOnly 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.