betagouv / rdv-service-public

Prise de RDV pour les services publics
https://rdv.anct.gouv.fr
GNU Affero General Public License v3.0
17 stars 2 forks source link

[SSI] Fixer des contraintes de longueur et de complexité des mots de passe #3624

Closed Scttpr closed 4 months ago

Scttpr commented 1 year ago

ℹ️ Contexte

"Fixer des contraintes de longueur et de complexité des mots de passe" est une des mesures indispensables pour l'homologation de sécurité

voir https://www.monservicesecurise.ssi.gouv.fr/service/30d7f75b-2c6b-422a-ae83-f228a2cb4324/mesures

:warning: Fixer des contraintes a minima, jamais a maxima, modulo des cas extremes qui pourraient pourrir la base de donnees.

Détails données par MonServiceSecurisé :

Fixer des règles de longueur et de complexité des mots de passe lors de la création d'un mot de passe ou de son renouvellement par un utilisateur ou un administrateur. Lorsque cela est possible, configurer le service pour interdire les mots de passe faibles.
Cette mesure permet de diminuer le risque de découverte et l'usurpation de mots de passe par des acteurs malveillants, par exemple en testant plusieurs mots de passe sur la base de mots du dictionnaire.
victormours commented 1 year ago

Piste d'implémentation :

voir la branche https://github.com/betagouv/rdv-solidarites.fr/compare/production...maquette-mots-de-passe

Messages d'erreur :

Pour assurer la sécurité de votre compte, votre mot de passe doit faire au moins 10 caractères.
Ce mot de passe fait partie d'une liste de mots de passe très fréquemment utilisés et ne permet donc pas d'assurer la sécurité de votre compte. Veuillez en choisir un autre.

Maquettes

6 écrans à modifier : nouveau compte, changement de mot de passe, réinitialisation de mot de passe, côté agent et usager.

@Teodora-Stanki Je voudrais bien avoir ta validation sur ces messages d'erreur et sur l'interface. J'essaye de pas me laisser embarquer dans une refonte totale des pages en questions, mais je me dis que ça vaut le coup de corriger quelques points de détails faciles (genre l'alignement du texte, le message d'erreur en double, et la largeur du formulaire).

Nouveau compte côté agent :

Avant :

Screenshot 2023-07-20 at 16 47 33

Après :

Screenshot 2023-07-20 at 16 54 53

Changement de mot de passe côté agent :

Avant

Screenshot 2023-07-20 at 17 39 39

Après

Screenshot 2023-07-20 at 17 33 13

Nouveau compte côté usager

Pas de changement à part les textes d'erreur (et le "6 caractères minimum" qui devient "10 caractères minimum") :

Screenshot 2023-07-20 at 17 44 42

Changement de mot de passe côté usager

Avant :

Screenshot 2023-07-20 at 17 55 25

Après :

Screenshot 2023-07-20 at 17 57 19

Réinitialisation de mot de passe : Avant :

Screenshot 2023-07-24 at 11 41 19 Screenshot 2023-07-24 at 11 41 28

Après : mêmes écrans avec juste des changement de message d'erreur de (et le "6 caractères minimum" qui devient "10 caractères minimum")

victormours commented 1 year ago

Points d'attention :

victormours commented 1 year ago

@Teodora-Stanki tu peux tester sur https://demo-rdv-solidarites-pr3694.osc-secnum-fr1.scalingo.io/

Teodora-Stanki commented 1 year ago

@victormours Voici mes retours :

En terme de wording : Soit on met « Mot de passe trop court », soit « Le mot de passe est trop court » puis « Le mot de passe actuel n’est pas valide » .

Pour le changement de mot de passe côté usager, il faudrait replacer le champ « mot de passe actuel » avant le champ nouveau mot de passe. Et dans l'idéal (et c'est meme très fortement recommandé), il faudrait ajouter un champs de « confirmation de mot de passe » juste en dessous du nouveau mot de passe, pour éviter les saisies d'erreur.

Il y a-t-il une possibilité de retour en arrière avec une CTA « annuler » ou "retour" pour cet écran-la ? Ca emmènerait l'usager vers la page "vos rendez-vous" (celle qui fait office de page d'accueil une fois connecté).

Pour les avertissements de mots de passe plus fort, il faudrait a minima ajouter un texte avant ces champs de saisie, du style :

Votre mot de passe doit :

On en discute quand tu veux si besoin.

victormours commented 1 year ago

J'aime bien qu'on ajoute le texte d'infos sur les contraintes sur les mots de passe, mais sur la page actuelle j'ai peur que ça augmente la confusion sur les formulaires "Votre compte" côté agent et usager.

J'ai l'impression que le problème à la racine de ça, c'est ce que c'est formulaires peuvent servir soit à changer des infos sur le compte (genre l'email), soit à changer le mot de passe (soit les deux), et que ça dépend de si on remplit le champs "Nouveau mot de passe", ce qui est pas clair du tout comme interface. Du coup, je serais tenté des les séparer en deux formulaires sur deux pages différentes : un pour les infos du compte, et un pour changer de mot de passe.

Ça ajoute un peu de travail sur ce chantier qui est à la base pour augmenter la sécurité, mais c'est pas mal de rendre ce formulaire plus clair. Je veux bien qu'on en discute de vive voix pour être alignés là dessus.

victormours commented 1 year ago

Vu avec Téo :

Pour les mdp Côté agent : sur la page “Votre compte”, mettre un lien explicite vers “Changer mon mot de passe”, quand le mot de passe est changé, rediriger vers “Votre compte” avec un message de confirmation. Sur la nouvelle page “Changer de mot de passe”, avoir un lien de retour vers “Mon compte”

Ajouter un champs “confirmation de mot de passe”

Ajouter une icone pour afficher le texte des mots de passe

victormours commented 1 year ago

Je vais livrer en trois temps :

victormours commented 1 year ago

suite en cours sur https://github.com/betagouv/rdv-solidarites.fr/compare/production...refactor-formulaires-chgt-de-mot-de-passe

victormours commented 1 year ago

@Teodora-Stanki J'ai fait une première version pour les agents : tu peux voir les screenshots ici https://github.com/betagouv/rdv-solidarites.fr/pull/3699 et tester sur la review app https://demo-rdv-solidarites-pr3699.osc-secnum-fr1.scalingo.io/ avec le compte alain.mairie@rdv-mairie-demo.fr, et le mot de passe lapinlapin

J'en ai profité pour ajouter les attributs qui font que les gestionnaires de mot de passe proposent de créer un nouveau mot de passe. Je me suis un peu déchauffé d'ajouter le bouton pour afficher le mot de passe, puisque c'est implémenté dans le dsfr, donc ça me semble pas la peine d'en créer un custom pour la période entre maintenant et le passage de cette page au dsfr.

victormours commented 4 months ago

continué dans https://github.com/betagouv/rdv-service-public/issues/4229