From e2be918137063eda5fb8b0d3a61fad14fd4855b5 Mon Sep 17 00:00:00 2001 From: Matthieu Marcillaud <marcimat@rezo.net> Date: Thu, 24 Feb 2022 19:51:15 +0100 Subject: [PATCH] =?UTF-8?q?Ne=20pas=20mettre=20de=20jeton=20d=E2=80=99url?= =?UTF-8?q?=20directement=20en=20bdd=20(cas=20de=20l=E2=80=99inscription?= =?UTF-8?q?=20d=E2=80=99auteur=20ou=20du=20changement=20de=20mot=20de=20pa?= =?UTF-8?q?sse)=20:=20on=20le=20hash=20avant=20(g0uZ)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ecrire/action/inscrire_auteur.php | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/ecrire/action/inscrire_auteur.php b/ecrire/action/inscrire_auteur.php index fd90a39d20..79a4c18443 100644 --- a/ecrire/action/inscrire_auteur.php +++ b/ecrire/action/inscrire_auteur.php @@ -348,11 +348,13 @@ function confirmer_statut_inscription($auteur) { */ function auteur_attribuer_jeton($id_auteur) { include_spip('inc/acces'); + include_spip('inc/securiser_action'); // s'assurer de l'unicite du jeton pour le couple (email,cookie) do { $jeton = creer_uniqid(); - sql_updateq('spip_auteurs', ['cookie_oubli' => $jeton], 'id_auteur=' . intval($id_auteur)); - } while (sql_countsel('spip_auteurs', 'cookie_oubli=' . sql_quote($jeton)) > 1); + $cle = calculer_cle_action($jeton); + sql_updateq('spip_auteurs', ['cookie_oubli' => $cle], 'id_auteur=' . intval($id_auteur)); + } while (sql_countsel('spip_auteurs', 'cookie_oubli=' . sql_quote($cle)) > 1); return $jeton; } @@ -369,10 +371,17 @@ function auteur_verifier_jeton($jeton) { return false; } + include_spip('inc/securiser_action'); + $cle = calculer_cle_action($jeton); + // on peut tomber sur un jeton compose uniquement de chiffres, il faut forcer le $type pour sql_quote pour eviter de planter - $desc = sql_fetsel('*', 'spip_auteurs', 'cookie_oubli=' . sql_quote($jeton, '', 'string')); + $desc = sql_fetsel('*', 'spip_auteurs', 'cookie_oubli=' . sql_quote($cle, '', 'string')); + // timing proof + if (verifier_cle_action($jeton, $desc['cookie_oubli'] ?? '')) { + return $desc; + } - return $desc; + return false; } /** -- GitLab