Sécurité : supprimer toutes les violations CSP (scripts et styles inline) #95
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
Le header Apache
Content-Security-Policyest défini dansvarlog/server/apache/lan.acegrp.varlog.conf:Un audit du code révèle plusieurs violations actives ou potentielles listées ci-dessous.
Violations actives (
script-src 'self'— bloquées aujourd'hui)1.
templates/comments_section.php:145—<script>inlineBloc JS inline qui préremplit le formulaire commentaire (nom/email) depuis les cookies. Bloqué par le CSP actuel — la fonctionnalité est donc cassée sur les sites qui appliquent ce CSP.
→ Déplacer dans un fichier
public/assets/js/comments.jschargé via<script src="..." defer>.2.
templates/wizard/step6.php:29—onclickinline avecconfirm()Double violation : handler inline (bloqué par
script-src) et utilisation deconfirm()(bloqué pardefault-srcsi on retireunsafe-inlineun jour, et bloqué par certains navigateurs en mode strict). Le bug CSP du bouton « à la une » (commitfabe5a9) avait la même origine.→ Remplacer par
data-confirm-discard+ listener dansadmin.js(même pattern quedata-confirmdéjà implémenté ligne 2-5 deadmin.js).3.
templates/post_confirm.php:119—oninputinlineLes attributs
on*sont considérés comme des scripts inline par le CSP.→ Déplacer dans un fichier JS dédié avec
addEventListener('input', ...).Violations potentielles (
style-src— autorisées aujourd'hui viaunsafe-inline)Si on durcit un jour la directive
style-src(en retirantunsafe-inline), les<style>inline suivants seront bloqués :templates/maintenance.phptemplates/wizard/nav.phptemplates/wizard/step5.phptemplates/wizard/step6.phptemplates/diff.phptemplates/post_confirm.php→ À terme, déplacer dans
public/assets/css/et ajouterunsafe-inlinedans la liste des choses à supprimer.Travail à faire
comments_section.php→public/assets/js/comments.jsonclick/confirm()dewizard/step6.phppar undata-*+ listener dansadmin.jsoninputdepost_confirm.phppar unaddEventListenerdans un fichier JS<style>inline vers des fichiers CSSRéférence
Config CSP :
varlog/server/apache/lan.acegrp.varlog.confligne 19.Rule consignes.md : ne jamais écrire de
<script>inline dans les templates.