J'ai besoin d'un peu d'aide par ici.
Lors du développement d'un thème, je veux m'assurer qu'il n'y a pas de problème de sécurité. Donc, toutes les données dynamiques doivent être correctement échappées pour le contexte dans lequel elles sont rendues.
Je sais comment échapper à ce qui suit:
esc_attr
sanitize_html_class
esc_html
esc_html__
, esc_html_e
, esc_attr_e
, etc.Mais il y a deux domaines dans lesquels je ne sais pas quoi faire.
Exemple:
<?php $subtitle = get_post_meta($post_id,'subtitle', true); ?>
<h3 class="subtitle"><?php echo $subtitle; ?></h3>
Notez que "wp_kses est une fonction coûteuse, elle ne devrait donc être exécutée que lorsque les données sont enregistrées, et non affichée" Proof here
Exemple:
<style type="text/css"><?php echo $css; ?></style>
Allons voir ce que le noyau ferait.
Dans default-filters.php
, voici ce que le contenu en sortie transmet:
add_filter( 'the_content', 'wptexturize' );
add_filter( 'the_content', 'convert_smilies' );
add_filter( 'the_content', 'convert_chars' );
add_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'shortcode_unautop' );
add_filter( 'the_content', 'prepend_attachment' );
Aucune de ces fonctions n'est réellement dédiée à la sécurité/échappement.
Il en va de même pour les commentaires, qui proviennent de visiteurs aléatoires et même d'auteurs de sites peu fiables:
add_filter( 'comment_text', 'wptexturize' );
add_filter( 'comment_text', 'convert_chars' );
add_filter( 'comment_text', 'make_clickable', 9 );
add_filter( 'comment_text', 'force_balance_tags', 25 );
add_filter( 'comment_text', 'convert_smilies', 20 );
add_filter( 'comment_text', 'wpautop', 30 );
En un mot, il est raisonnablement digne de confiance, après avoir été nettoyé des soumissions et revenant de la base de données.