Astuces & Snippets WordPress

Ajouter un mot de passe pour votre site WordPress

Pour diminuer les risques de vol de compte, il peut être intéréssant d'ajouter un mot de passe supplémentaire commun à tous les utilisateurs inscrits sur votre site.

S'inscrire à la newsletter

Votre compte d’accès à l’administration de votre WordPress est protégé par un mot de passe que vous avez choisi lors de sa création. Parmi les membres inscrits sur votre site, on peut trouver des utilisateurs qui peuvent s’y connecter pour commenter, mais aussi des auteurs ou des contributeurs qui rédigent des articles. Aussi, vous souhaiteriez ajouter un mot de passe commun pour tout le monde, en plus du mot de passe personnel : un mot de passe pour le site.

Ajout du nouveau champ dans le formulaire de connexion

Avec le hook login_form, il est possible d’ajouter du code HTML dans le formulaire de connexion. On en profite pour insérer le champ réservé au mot de passe supplémentaire.

Copier le code ci-dessous dans le fichier functions.php présent à la racine de votre thème :

function baw_login_form_add_field() { ?>
 <p>
  <label>Mot de passe du site<br />
  <input name="site_pass" tabindex="30" type="password" class="input" id="site_pass" /></label><br />
  Besoin d'un mot de passe ? <a href="/contact">Contactez nous</a> !
 </p>
 <?php
}
add_action( 'login_form', 'baw_login_form_add_field' );

Traiter le nouveau mot de passe

Sur le hook authenticate, on peut empêcher un membre valide (on entend par là un membre qui a correctement entré toutes les autres informations) de se connecter. On le fait ici en vérifiant la valeur du mot de passe envoyée dans le formulaire de connexion dont le nom du champ est site_pass.

Copier le code-ci dessous dans le fichier functions.php présent à la racine de notre votre thème :

function baw_login_authenticate( $raw_user, $username ) {
    
    // Le nouveau pass supplémentaire
    $new_password = 'ceci est un super mot de passe a retenir';
    
    if( !empty( $username ) && ( !isset( $_POST['site_pass'] ) || $_POST['site_pass']!=$new_password ) ) {
        
        // on secoue la fenêtre de login
        add_action( 'login_head', 'wp_shake_js', 12 );

        // et on court-circuite la fin du login en renvoyant une erreur
        return new WP_Error( 'authentication_failed', '<strong>ERREUR</strong>: Le mot de passe du site est incorrect.' );
    }
    
    // ... sinon on renvoie ce qui en donné en entrée
    return $raw_user;
}
add_filter('authenticate', 'baw_login_authenticate', 999, 2 );

Voici le résultat en image :

Vous voilà avec un mot de passe supplémentaire pour votre site !

16 commentaires
  1. Ju le

    Je découvre ! :)

    Du coup on peut s’en servir pour faire un Captcha light non ? Inserer une image qui demande d’écrire le resultat de 2 + trois par exemple …

  2. Julio Potier (BoiteAWeb) le

    Bien sûr, avec ça tu as une bonne base. Si tu en fait un captcha partage le ici ! À bientôt :-)

  3. La rando le

    Excelent, c’est le top pour les mots de passe des membres qui utilisent l’interface! merci pour cet article!

  4. Joseph le

    Bonjour,
    Pourriez-vous m’indiquer comment insérer le champ réservé au mot de passe supplémentaire ?
    Merci par avance,
    -Jo

  5. Joseph le

    C’est parfait, merci Julio!

  6. jmlapam le

    Merci beaucoup. Vraiment utile en production cette astuce. A tweeter …

  7. Jonathan Buttigieg le

    Idem. Je pense que je vais mettre ceci en place sur les sites clients en prod :)

  8. Julio Potier (BoiteAWeb) le

    Super je suis content que ça vous plaise et que ça serve aussi ! À bientôt

  9. lykxie le

    Bonjour,

    Merci pour vos infos. J’aurai une question, comment faire pour bloquer une partie du site, par exemple mettre une page de téléchargement ou seuls des internautes ayant un mot de passe peuvent y accéder?
    Pour me joindre: lykxie@yahoo.fr

    Merci d’avance pour votre attention!

  10. Jonathan Buttigieg le

    @LYKXIE: Il suffit de créer votre page et de lui mettre un mot de passe :)

  11. Julio Potier (BoiteAWeb) le

    Euh crée une page et passe son statut en privé ?

  12. samsoul le

    Ajouter un mots de passe complémentaire ok. On peut se dire que cela renforce la sécurité de notre site. Mais il est stocké en clair dans notre fichier functions.php. Donc au final ça ou rien c’est à peu près la même chose… A part obliger les utilisateurs du backofffice à perdre 5s pour renseigner un champs supplémentaire quel est le réel gain en terme de sécurité??
    D’où ma question subsidiaire : comment proteger ce mot de passe? Ne devrait-il pas etre « hashé » au préalable? Voir même un hash du hash? Chiche… Quel méthode utiliser dans cette fonction pour masquer/sécuriser un peu plus ce mdp? Comment protéger notre fichier functions.php? Comment ce mdp complémentaire est transmis à wordpress lors de l’authentification? Comment procéder pour que notre super mdp ne soit pas intercepté?
    Le réel enjeu est plutôt là.
    Car comme je le dis plus haut: si notre mdp complémentaire n’est pas secure, à quoi bon l’ajouter? Hormis faire perdre du temps à nos utilisateurs???
    Ce n »est pas d’eux dont nous avons à craindre mais de personnes bien moins intentionnées…

  13. Julio Potier le

    Bonsoir Sam.
    Le mot de passe est en clair dans functions.php, tout comme ton mot de passe de base de données l’est dans wp-config.php. Si une personne arrivait à lire le contenu de fon fichier functions.php, c’est que le mot de passe ne lui servirait déjà plus, elle aurait déjà réussi à avoir un accès au delà de ça.
    Il est possible mains inutile de sécuriser le mot de passe avec un hash (ou 2 ou 10).
    Sécuriser ce fichier ? De la même façon que tu sécurise wp-config.php si tu veux.
    Sécuriser un site est un travail de longue haleine, jamais terminé et où le risque 0 n’existe pas.
    Ici le fait d’ajouter un mot de passe au site fait en sorte que si une personne se fait dérober son mot de passe car le pirate connait son mot de passe favori, il lui manquera le mot de passe du site, celui que la personne ne peut pas changer.
    Alors oui ça fait entrer un pass de plus, mais si tu as un site avec des centaines de membres, alors ce n’est peut-être pas à faire.
    Toutes les sécurités ne sont pas à apposer aveuglément sur un site, chacun doit être réfléchis et leur interactions pensées.
    Comment ce pass est transmis ? Comme le pass de ton compte, celà dépends si tu es en HTTPS ou pas.

  14. samsoul le

    Merci Julio pour ce complément d’information et ces précisions.
    La partie sécurité de manière général n’est pas mon fort. Alors je pose des questions (bien souvent maladroitement…) aux gens d’expérience. Même si ici j’aurais peut-être dût prendre un peu de temps pour mieux comprendre le déroulement des choses… :)
    Bien content que tu nous accordes du temps et de la patience pour nous éclairer.
    Bonne continuation.

Poster un commentaire

Les champs obligatoires sont indiqués avec *

Ici, on utilise KeywordLuv. Entrez YourName@YourKeywords dans le formulaire "Pseudo" pour bénéficier des avantages SEO d'un mot-clef ciblé. Attention, tous les commentaires non-constructifs ne bénéficieront pas d'une ancre optimisée.

Prévenez moi de tous les nouveaux commentaires par email.

Ne plus afficher|Fermer
Suivez-nous sur Facebook !