{
"regles": [
{
"id": "CSP-INLINE-EVENT-HANDLER-01",
"theme": "csp_script",
"niveau": "haute",
"description": "Gestionnaire d'événement HTML inline (onclick/onload/...) — bloqué par toute CSP script-src sans 'unsafe-inline', et risque XSS si la valeur provient d'une donnée utilisateur.",
"motif": "(?i)\\son(click|load|change|submit|mouseover|mouseout|keydown|keyup|focus|blur|input|dblclick|contextmenu|error)\\s*=\\s*\\\\?['\"]",
"action_recommandee": "Déplacer la logique dans un fichier .js externe et attacher l'écouteur via addEventListener — voir feedback_csp_onclick_inline_interdit."
},
{
"id": "CSP-JAVASCRIPT-URI-01",
"theme": "csp_script",
"niveau": "haute",
"description": "URI de schéma javascript (pseudo-protocole) dans un attribut href/src — équivalent fonctionnel d'un script inline, bloqué par CSP et vecteur XSS classique.",
"motif": "(?i)(?:href|src)\\s*=\\s*\\\\?['\"]\\s*javascript[:]",
"action_recommandee": "Remplacer par un vrai lien/ressource, ou un gestionnaire d'événement externe si une action JS est réellement nécessaire."
},
{
"id": "CSP-INLINE-STYLE-ATTR-01",
"theme": "csp_style",
"niveau": "moyenne",
"description": "Attribut style=\"...\" inline — bloqué par toute CSP style-src sans 'unsafe-inline' (à moins d'utiliser un nonce/hash dédié).",
"motif": "(?i)\\sstyle\\s*=\\s*\\\\?['\"]",
"action_recommandee": "Déplacer la règle dans une feuille de style externe (classe CSS) plutôt qu'un attribut style inline."
},
{
"id": "CSP-MIXED-CONTENT-HTTP-01",
"theme": "contenu_mixte",
"niveau": "moyenne",
"description": "Ressource chargée en http:// non chiffré (hors localhost/127.0.0.1) — signalé par Lighthouse (\"Uses HTTPS\"/contenu mixte) et bloqué par le navigateur si la page est servie en HTTPS.",
"motif": "(?i)(?:href|src)\\s*=\\s*\\\\?['\"]\\s*http://(?!localhost|127\\.0\\.0\\.1)",
"action_recommandee": "Charger la ressource en https:// ou en URL relative/protocol-relative."
},
{
"id": "CSP-INLINE-STYLE-BLOCK-01",
"theme": "csp_style",
"niveau": "info",
"description": "Bloc <style> inline dans le document — Lighthouse recommande d'externaliser le CSS pour la mise en cache navigateur ; nécessite aussi 'unsafe-inline' ou un nonce/hash côté CSP style-src.",
"motif": "(?i)<style(\\s|>)",
"action_recommandee": "Envisager d'externaliser vers un fichier .css dédié si le bloc n'est pas généré dynamiquement pour une raison spécifique."
}
],
"extensions_scannees": [".html", ".htm", ".js", ".css", ".rs"],
"dossiers_ignores": [
"target", "node_modules", ".git", "__pycache__", "dist", "build",
"venv", ".venv", ".mypy_cache", ".pytest_cache", "vendor"
]
}