WordPress : Validation sécurisée de wp_editor dans les options de thème
Je viens donc de trouver ce super fil WPSE sur la sécurité des thèmes/plugins. Il a répondu à la plupart de mes questions, mais il a été créé avant la création de la nouvelle wp_editor()
fonction.
J’ai deux éditeurs TinyMCE sur mes options de thème et je me demande si je dois utiliser esc_html()
ou esc_textarea()
dans un rappel de validation avant d’enregistrer l’option de thème. Il me semble que TinyMCE s’occupe de beaucoup de ces choses (ainsi que de la sécurité de l’API Settings qui est prise en charge), mais il n’y a toujours pas beaucoup de documentation sur wp_editor()
.
Toutes les ressources et réponses appréciées.
Solution n°1 trouvée
Le TinyMCE a un filtre pour toutes les balises autorisées. Vous pouvez changer les balises, il y a des mises en standard pour vos options et l’éditeur filtre les balises. Il n’est pas nécessaire de filtrer après l’enregistrement.
Exemple de balises améliorées :
function fb_change_mce_options( $initArray ) {
// Comma separated string od extendes tags
// Command separated string of extended elements
$ext = 'pre[id|name|class|style],iframe[align|longdesc|name|width|height|frameborder|scrolling|marginheight|marginwidth|src]';
if ( isset( $initArray['extended_valid_elements'] ) ) {
$initArray['extended_valid_elements'] .= ',' . $ext;
} else {
$initArray['extended_valid_elements'] = $ext;
}
// set tiny paramter verify_html
$initArray['verify_html'] = true;
return $initArray;
}
add_filter( 'tiny_mce_before_init', 'fb_change_mce_options' );
Vous pouvez également filtrer les balises, toutes les balises à l’intérieur du tableau $initArray
sont autorisées. Il est facile de supprimer les balises du tableau.
unset( $initArray['pre'] )
lire les éléments à l’intérieur du tableau viavar_dump( $initArray );
Meilleur
Solution n°2 trouvée
esc_html()
et esc_textarea()
sont, comme leurs noms l’indiquent, échappant aux fonctions et réellement destinés à être affichés plutôt qu’à être nettoyés ou validés. J’utiliserais wp_kses()
ou wp_kses_post()
(qui est juste wp_kses()
avec le global $allowedposttags
) pour nettoyer l’entrée d’un wp_editor()
champ avant d’enregistrer.
0 commentaire