From 5358fa1bba82489e502de183e376c0d70d5584c5 Mon Sep 17 00:00:00 2001 From: "cedric@yterium.com" <> Date: Wed, 20 Apr 2016 12:18:27 +0000 Subject: [PATCH] Dans la configuration du facteur, le password peut etre une API key qu'on ne veut pas divulguer, mais le champ password est facile a lire avec un firebug. On n'y injecte donc plus le mot de passe actuel, qui est affiche partiellement en dessous pour verifier si il est bon (si le mot de passe est court, on affiche que des * a la place des caracteres, si il est long on affiche une portion de 10% au debut et a la fin) Si le champ est vide, la configuration actuelle est conservee, si un nouveau mot de passe est saisi il est mis en configuration et conserve dans le formulaire Ce format de saisie pourrait etre un pattern a generaliser pour les saisies d'API key ou mot de passe un peu sensible --- facteur_fonctions.php | 15 ++++++++++++++- formulaires/configurer_facteur.html | 1 + formulaires/configurer_facteur.php | 10 ++++++---- paquet.xml | 2 +- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/facteur_fonctions.php b/facteur_fonctions.php index 9fb6b1d..54a2d25 100755 --- a/facteur_fonctions.php +++ b/facteur_fonctions.php @@ -8,6 +8,19 @@ if (!defined("_ECRIRE_INC_VERSION")) return; +function facteur_affiche_password_masque($pass){ + $l = strlen($pass); + if ($l<=8){ + return str_pad('',$l,'*'); + } + $e = intval(ceil($l/10)); + $mid = str_pad('',$l-2*$e,'*'); + if (strlen($mid)>8){ + $mid = '***...***'; + } + return substr($pass,0,$e) . $mid . substr($pass,-$e); +} + /** * Transformer un mail texte ou HTML simplifie en mail HTML complet avec le wrapper emails/texte.html * Si le mail est un mail texte : @@ -291,7 +304,7 @@ function facteur_nl2br_si_pas_autobr($texte){ /** * Transformer un mail HTML en mail Texte proprement : - * - les tableaux de mise en page sont utilisés pour structurer le mail texte + * - les tableaux de mise en page sont utilis�s pour structurer le mail texte * - le reste du HTML est markdownifie car c'est un format texte lisible et conventionnel * * @param string $html diff --git a/formulaires/configurer_facteur.html b/formulaires/configurer_facteur.html index 5618a4e..caea099 100644 --- a/formulaires/configurer_facteur.html +++ b/formulaires/configurer_facteur.html @@ -84,6 +84,7 @@ [ (#ENV**{erreurs}|table_valeur{facteur_smtp_password})] + [(#ENV**{_facteur_smtp_password}|facteur_affiche_password_masque)] diff --git a/formulaires/configurer_facteur.php b/formulaires/configurer_facteur.php index f616fb6..1802bb8 100644 --- a/formulaires/configurer_facteur.php +++ b/formulaires/configurer_facteur.php @@ -19,7 +19,8 @@ function formulaires_configurer_facteur_charger_dist(){ 'facteur_smtp_port' => lire_config('facteur_smtp_port', 25), 'facteur_smtp_auth' => lire_config('facteur_smtp_auth'), 'facteur_smtp_username' => lire_config('facteur_smtp_username'), - 'facteur_smtp_password' => lire_config('facteur_smtp_password'), + 'facteur_smtp_password' => '', + '_facteur_smtp_password' => lire_config('facteur_smtp_password'), 'facteur_smtp_secure' => lire_config('facteur_smtp_secure'), 'facteur_smtp_sender' => lire_config('facteur_smtp_sender'), 'facteur_filtre_images' => lire_config('facteur_filtre_images'), @@ -70,7 +71,7 @@ function formulaires_configurer_facteur_verifier_dist(){ if (_request('facteur_smtp_auth')=='oui'){ if (!_request('facteur_smtp_username')) $erreurs['facteur_smtp_username'] = _T('info_obligatoire'); - if (!_request('facteur_smtp_password')) + if (!_request('facteur_smtp_password') AND !lire_config('facteur_smtp_password')) $erreurs['facteur_smtp_password'] = _T('info_obligatoire'); } } @@ -126,8 +127,9 @@ function formulaires_configurer_facteur_traiter_dist(){ $facteur_smtp_username = _request('facteur_smtp_username'); ecrire_meta('facteur_smtp_username', $facteur_smtp_username); - $facteur_smtp_password = _request('facteur_smtp_password'); - ecrire_meta('facteur_smtp_password', $facteur_smtp_password); + if ($facteur_smtp_password = _request('facteur_smtp_password')) { + ecrire_meta('facteur_smtp_password', $facteur_smtp_password); + } if (intval(phpversion()) == 5) { $facteur_smtp_secure = _request('facteur_smtp_secure'); diff --git a/paquet.xml b/paquet.xml index 7357b9b..5f3661a 100644 --- a/paquet.xml +++ b/paquet.xml @@ -1,7 +1,7 @@