Browse Source

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
v3
cedric@yterium.com 7 years ago
parent
commit
5358fa1bba
  1. 15
      facteur_fonctions.php
  2. 1
      formulaires/configurer_facteur.html
  3. 10
      formulaires/configurer_facteur.php
  4. 2
      paquet.xml

15
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<EFBFBD>s pour structurer le mail texte
* - le reste du HTML est markdownifie car c'est un format texte lisible et conventionnel
*
* @param string $html

1
formulaires/configurer_facteur.html

@ -84,6 +84,7 @@
<label for="facteur_smtp_password"><:facteur:facteur_smtp_password:></label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{facteur_smtp_password})</span>]
<input type="password" name="facteur_smtp_password" class="text" value="#ENV**{facteur_smtp_password}" id="facteur_smtp_password" />
[<tt>(#ENV**{_facteur_smtp_password}|facteur_affiche_password_masque)</tt>]
</li>
</ul>
</li>

10
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');

2
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="facteur"
categorie="communication"
version="3.3.5"
version="3.3.6"
etat="stable"
compatibilite="[3.0.0;3.1.*]"
logo="prive/themes/spip/images/facteur-32.png"

Loading…
Cancel
Save