web-dev-qa-db-fra.com

Pourquoi les mots de passe générés commencent/finissent-ils par des espaces?

Lorsque de nouveaux mots de passe sont générés pour les nouveaux utilisateurs, certains utilisateurs signalent que les mots de passe incluent des espaces au début et à la fin des mots de passe. Quelqu'un a-t-il déjà rencontré ce problème ou sait-il pourquoi cela se produirait? Quels sont les problèmes potentiels avec cela, et comment peuvent-ils être évités?

4
mrpatg

Si wp_generate_password() a été appelé avec le troisième paramètre $extra_special_chars = true, un espace pourrait faire partie du mot de passe:

function wp_generate_password( $length = 12, $special_chars = true, $extra_special_chars = false ) {
    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    if ( $special_chars )
        $chars .= '!@#$%^&*()';
    if ( $extra_special_chars )
        $chars .= '-_ []{}<>~`+=,.;:/?|';

    $password = '';
    for ( $i = 0; $i < $length; $i++ ) {
        $password .= substr($chars, wp_Rand(0, strlen($chars) - 1), 1);
    }

    // random_password filter was previously in random_password function which was deprecated
    return apply_filters('random_password', $password);
}

Il existe trois autres possibilités permettant aux espaces de trouver un moyen d'entrer des mots de passe:

  1. Le client de messagerie a appliqué une mise en forme endommagée au message.
  2. Un plugin filtre le mot de passe et ajoute de l'espace.
  3. Un plugin a défini la fonction avant que WP ne l'ait fait (c'est une fonction pluggable) et les espaces autorisés.

Rechercher tous les plugins installés pour mot de passe . Demandez à vos utilisateurs quel client de messagerie ils utilisent. Pour éviter les espaces avant ou après WP mots de passe générés, ajoutez un filtre:

add_filter( 'random_password', 'trim' );

Notez que WordPress n'envoie pas de mot de passe avec des espaces aux utilisateurs par défaut. Il y a probablement un autre code impliqué.

5
fuxia