Browse Source

suppression de la desinstallation (car pas desinstallable, ca doit aller dans un plugins-dist/ ou le core), generation de la cle dans _DIR_ETC.cles.php et inclusions via chiffrement_options.php, ajout d'un cas pour la longueur 98 dans auth/spip.php pour les hash argon2i

master
root-www 2 years ago
parent
commit
c338854811
  1. 12
      auth/spip.php
  2. 1
      chiffrer_administrations.php
  3. 11
      chiffrer_fonctions.php
  4. 7
      chiffrer_options.php

12
auth/spip.php

@ -43,22 +43,19 @@ function auth_spip_dist($login, $pass, $serveur = '', $phpauth = false) {
$shapass = $pass_hash_next = "";
if ($pass) {
$row = sql_fetsel("alea_actuel, alea_futur", "spip_auteurs", "login=" . sql_quote($login, $serveur, 'text'), '', '',
$row = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($login, $serveur, 'text') . " AND statut<>'5poubelle'", '', '',
'', '', $serveur);
if ($row) {
include_spip('auth/sha256.inc');
$pass_poivre = hash_hmac("sha256", $pass, $GLOBALS['cle_secrete']);
$pass_hash_next = password_hash($pass_poivre, PASSWORD_BCRYPT, ['salt' => $row['alea_futur']]);
$pass_hash_next = password_hash($pass_poivre, PASSWORD_DEFAULT, ['salt' => $row['alea_futur']]);
$shapass = spip_sha256($row['alea_actuel'] . $pass);
$md5pass = md5($row['alea_actuel'] . $pass);
}
} else {
return array();
}
$row = sql_fetsel("*", "spip_auteurs",
"login=" . sql_quote($login, $serveur, 'text') . " AND statut<>'5poubelle'", '', '', '', '', $serveur);
switch ( strlen($row["pass"]) ) {
case 32:
@ -70,6 +67,9 @@ function auth_spip_dist($login, $pass, $serveur = '', $phpauth = false) {
case 64:
if ( $row["pass"] != $shapass ) unset($row);
break;
case 98:
if ( ! password_verify($pass_poivre, $row["pass"]) ) unset($row);
break;
default:
unset($row);
}
@ -278,7 +278,7 @@ function auth_spip_modifier_pass($login, $new_pass, $id_auteur, $serveur = '') {
$alea_actuel = creer_uniqid();
$alea_futur = creer_uniqid();
$pass_poivre = hash_hmac("sha256", $new_pass, $GLOBALS['cle_secrete']);
$pass = password_hash($pass_poivre, PASSWORD_BCRYPT, ['salt' => $alea_actuel]);
$pass = password_hash($pass_poivre, PASSWORD_DEFAULT, ['salt' => $alea_actuel]);
$c['pass'] = $pass;
$c['htpass'] = $htpass;

1
chiffrer_administrations.php

@ -28,7 +28,6 @@ function chiffrement_installation(){
function chiffrement_desinstallation(){
include_spip("chiffrer_fonctions");
supprimer_cle();
}
/**

11
chiffrer_fonctions.php

@ -13,21 +13,14 @@ if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function initialiser_cle(){
if ( $fichier_cles = find_in_path("chiffrer_options.php") ){
$fichier_cles = _DIR_ETC."cles.php";
if ( ! file_exists($fichier_cles) ){
$GLOBALS['cle_secrete'] = openssl_random_pseudo_bytes(16);
ecrire_fichier($fichier_cles, "<?php\n\n\$GLOBALS['cle_secrete'] = base64_decode('".base64_encode($GLOBALS['cle_secrete'])."');\n");
}
}
function supprimer_cle(){
if ( $fichier_cles = find_in_path("chiffrer_options.php") ){
ecrire_fichier($fichier_cles, '');
}
}
function chiffrer($clair){
$cipher="AES-128-CBC";
$ivlen = openssl_cipher_iv_length($cipher);

7
chiffrer_options.php

@ -0,0 +1,7 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip(_DIR_ETC."cles");
Loading…
Cancel
Save