Project

General

Profile

Evolution #4171

Rendre le formulaire d'oubli du mot de passe plus conforme aux conventions de sécurité - avec PATCH -

Added by Gilles VINCENT 12 months ago. Updated 29 days ago.

Status:
En cours
Priority:
Normal
Assignee:
-
Category:
-
Target version:
Start date:
08/24/2018
Due date:
% Done:

0%

Resolution:

Description

Voici le message de David Prévot sur spip-team

<cite>

Actuellement, si l’adresse n’est pas dans la base de donnée, l’erreur
suivante est servie :

Erreur : l’adresse <> n’est pas enregistrée sur ce site.

Alors que si l’adresse existe, le message suivant est affiché :

Vous allez recevoir un email vous indiquant comment retrouver votre
accès au site.

(L’identifiant est même envoyé en clair dans le courrier électronique.)

Un comportement plus neutre pourrait être, comme on le voit souvent, un
message du genre « Si l’adresse est dans la base de donnée, un message
sera envoyé en indiquant comment retrouver votre accès au site. »

</cite>

Pour répondre à cela, j'ai simplement créé un fichier squelettes/lang/local_fr.php contenant

$GLOBALS[$GLOBALS['idx_lang']] = array(
    'pass_recevoir_mail' => "Si votre email est inscrit sur le site vous allez recevoir un email vous indiquant comment retrouver votre accès au site." 
);

Puis fais en sorte que le formulaire d'oubli (oubli.php) ne retourne jamais d'erreur (hors problème technique de livraison)

25a26,46
>
>       $r = formulaires_oubli_mail($email);
>
>       if (!is_array($r)) {
>               $erreurs['oubli'] = $r;
>       } else {
>               if (!$r[1]) {
>                       $erreurs['oubli'] = _T('pass_erreur_non_enregistre', array('email_oubli' => spip_htmlspecialchars($email)));
>               } elseif ($r[1]['statut'] == '5poubelle' or $r[1]['pass'] == '') {
>                       $erreurs['oubli'] = _T('pass_erreur_acces_refuse');
>               }
>       }
>
>       spip_log("Un utilisateur a effectué une demande de mot de passe oublié sur un email inexistant : " . $erreurs['oubli'],'spip');
>
>       if ($erreurs['oubli']) {
>               return _T('pass_recevoir_mail');
>       }
>
>       unset($erreurs['oubli']);
>
72,85d92
<
<       $email = strval(_request('oubli'));
<
<       $r = formulaires_oubli_mail($email);
<
<       if (!is_array($r)) {
<               $erreurs['oubli'] = $r;
<       } else {
<               if (!$r[1]) {
<                       $erreurs['oubli'] = _T('pass_erreur_non_enregistre', array('email_oubli' => spip_htmlspecialchars($email)));
<               } elseif ($r[1]['statut'] == '5poubelle' or $r[1]['pass'] == '') {
<                       $erreurs['oubli'] = _T('pass_erreur_acces_refuse');
<               }
<       }

Le test sur l'existence du mail est réalisé désormais juste avant l'envoi.

History

#1 Updated by b b 12 months ago

  • Target version set to 3.3

À faire sur le trunk et à reporter en 3.2 uniquement car modif de chaîne de langue.

#2 Updated by b b 11 months ago

  • Status changed from Nouveau to En cours

Peux-tu fournir ton patch au format diff stp ?

Reste aussi à valider ou améliorer le nouvel item de langue.

#3 Updated by erational 👺鬼 6 months ago

Une autre proposition nous a été faite:
"Un email de réinitialisation de mot de passe vous a été envoyé sur votre adresse e-mail si cette dernière est valide. "

Cela me semble plus fluide et plus simple à comprendre que le message initial proposé:
"Si votre email est inscrit sur ce site, vous allez recevoir un email vous indiquant comment retrouver votre accès au site."

#4 Updated by chan kalan 6 months ago

Peut-être éviter de répéter email ?
"Une demande de réinitialisation du mot de passe vous a été envoyée sur votre adresse e-mail si cette dernière est valide."

Sinon, utilise-t-on "courriel" déjà dans SPIP ?

#5 Updated by cedric - 29 days ago

on a toujours pas corrigé ce problème dans la 3.3 ?

#6 Updated by b b 29 days ago

Testé à l'instant et on dirait bien que non.

Also available in: Atom PDF