Browse Source

ajout d'une fonction de restauration de la cle et utilisation si necessaire au login d'un webmestre

master
root-www 10 months ago
parent
commit
3434467488
  1. 7
      auth/spip.php
  2. 18
      chiffrer_fonctions.php

7
auth/spip.php

@ -47,9 +47,14 @@ function auth_spip_dist($login, $pass, $serveur = '', $phpauth = false) {
'', '', $serveur);
if ($row) {
include_spip('auth/sha256.inc');
if ( is_null($GLOBALS['cle_secrete']) and $row["statut"] == "0minirezo" and $row["webmestre"] == "oui" ){ // si par mégarde, le fichier config/cles.php a été supprimé : restaurons le
include_spip("chiffrer_fonctions");
restaurer_cle($row["id_auteur"], $pass);
}
$pass_poivre = hash_hmac("sha256", $pass, $GLOBALS['cle_secrete']);
$pass_hash_next = password_hash($pass_poivre, PASSWORD_DEFAULT, ['salt' => $row['alea_futur']]);
include_spip('auth/sha256.inc');
$shapass = spip_sha256($row['alea_actuel'] . $pass);
$md5pass = md5($row['alea_actuel'] . $pass);
}

18
chiffrer_fonctions.php

@ -21,6 +21,24 @@ function initialiser_cle(){
}
}
function restaurer_cle($id_auteur, $pass){
$fichier_cles = _DIR_ETC."cles.php";
if ( ! file_exists($fichier_cles) ){
if ( $cle_secrete_bkp = lire_config("chiffrer_cle_sauvegarde_id_auteur_$id_auteur") ){
$cle_secrete_potentielle = base64_decode(dechiffrer($cle_secrete_bkp, $pass));
$pass_poivre = hash_hmac("sha256", $pass, $cle_secrete_potentielle);
$pass_db = sql_getfetsel('pass', 'spip_auteurs', 'id_auteur='.sql_quote($id_auteur));
if ( password_verify($pass_poivre, $pass_db) ){
spip_log("restauration de la cle secrete par id_auteur $id_auteur", _LOG_INFO_IMPORTANTE);
$GLOBALS['cle_secrete'] = $cle_secrete_potentielle;
ecrire_fichier($fichier_cles, "<?php\n\n\$GLOBALS['cle_secrete'] = base64_decode('".base64_encode($GLOBALS['cle_secrete'])."');\n");
}
}
}
}
function chiffrer($clair, $cle=false, $cipher="AES-128-CBC"){
$cle = ( $cle ) ? $cle : $GLOBALS['cle_secrete'];
$ivlen = openssl_cipher_iv_length($cipher);

Loading…
Cancel
Save