WordPress : Besoin d’aide pour l’assainissement

Publié par Jean-Michel le

J’ai un thème en révision, et j’ajoute la section ‘type’=> ‘select’ à quelques occasions comme celle-ci.

$wp_customize->add_setting( 'personal_lite_post_link', array(
        'default' => 'enable',
        'sanitize_callback' => 'personal_lite_select_callback'
    ) );
    $wp_customize->add_control('postlink-options', array(
        'label' => esc_html__('Post navigation', 'personal-lite'),
        'section' => 'personal_lite_post', 
        'settings' => 'personal_lite_post_link',
        'type' => 'select', 
        'choices' => array('enable' => esc_html__('Enable', 'personal-lite'), 'disable' => esc_html__('Disable', 'personal-lite'))
    ) );

et désinfecter comme ça

function personal_lite_select_callback($input) {
    $valid = array(
        'lightslategrey' => esc_html__('Grey', 'personal-lite'),
        'seagreen' => esc_html__('Green', 'personal-lite'),
        'enable' => esc_html__('Enable', 'personal-lite'),
        'disable' => esc_html__('Disable', 'personal-lite'),
    );
    if (array_key_exists($input, $valid)) {
        return $input;
    } else {
        return '';
    }
}

Maintenant, l’examinateur demande de diviser la désinfection en deux fonctions ? comment faire ça?

Voici le mot exact du critique.

I'm a fan of whitelisting for sanitization. However, this function should be broken into two separate functions:

Only some settings can have some of those keys. Make sure the setting is valid by using the appropriate whitelist function for that setting.

Comment résoudre ce problème ? Aidez-moi, s’il vous plaît.

Solution n°1 trouvée

Honnêtement, pour le champ de sélection, ce n’est pas si important quels sont les choix pour nettoyer le champ et en fait ce que vous faites, je ne pense pas que ce soit une bonne idée si un utilisateur veut filtrer vos paramètres pour ajouter de nouvelles options au champ de sélection. Plus important encore, vous cherchez à nettoyer la sortie qui est une valeur de chaîne. Donc, utiliser wp_strip_all_tags ou même esc_html pour le rappel de désinfection, je pense, serait le mieux. Votre entrée sera toujours filtrée pour le code malveillant, mais permettra également un réglage plus facile via un thème enfant.

Mais en ce qui concerne ce que votre réviseur vous dit, il est fort probable que vous utilisiez la fonction personal_lite_select_callback pour plusieurs options de sélection dans le personnalisateur, certaines ayant des valeurs différentes, ils souhaitent donc que vous créiez une nouvelle fonction pour chacune.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *