Repository navigation
v4.0.3 — Correctifs de sécurité
Correctifs de sécurité
🟠 XSS potentiel dans headertext (via attributs HTML)
strip_tags() ne supprime pas les attributs à l'intérieur des balises autorisées (<span onmouseover="..."> survivait). Remplacé par wp_kses() avec une allowlist stricte sur les tags et leurs attributs :
headertext/headertext_*:b,strong,i,em,span[style]— aucun attribut événementiel possiblefooter/footer_*:wp_kses_post()— plus robuste questrip_tags()sur les attributsheaderimg_notice:<a>limité àhref,title,rel,target
Ajout de wp_kses_post() au point de rendu pour le cas just_text de get_header().
🟡 Whitelist des clés dans validate_theme_options()
Les données POST pouvaient contenir des clés arbitraires stockées après sanitisation. Ajout d'un array_filter() en tête de validate_theme_options() : seules les clés de get_default_theme_options() et les suffixes de traduction connus (footer_*, headertext_*) sont conservées.
🟠 Mail Builder CPT : capacités restreintes à manage_options
Le custom post type wphtmlmail_mail utilisait capability_type => 'post' (accessible aux editor et author). Ajout d'un tableau capabilities mappant toutes les opérations CPT sur manage_options. La vérification dans save_post est passée de edit_posts à manage_options.