Salut la liste,
Est-ce qu'on en a besoin en dehors de l'authentification ?
car là, ça consomme..
Salut la liste,
Est-ce qu'on en a besoin en dehors de l'authentification ?
car là, ça consomme..
J'ai proposé un patch qui permet de s'assurer que le hash n'est
calculé qu'une fois (via une variable de type static). Je pars du
principe que s'il est valable une fois, il l'est tout le temps.
Qu'en pensez-vous ?
ça serait pas plus prudent que ta static soit un tableau ?
Les arguments n'ont peut-être pas toujours la même valeur...
Si tu essaies avec ce patch (non testé) :
+ $h = $action.$id_auteur.$pass.@$GLOBALS['meta'][$alea];
+ if (!isset($authenticated[$h])) {
+ if (!isset($GLOBALS['meta'][$alea]) AND _request('exec')!=='install') {
+ include_spip('base/abstract_sql');
+ $GLOBALS['meta'][$alea] = sql_getfetsel('valeur', 'spip_meta', "nom=" . sql_quote($alea));
+ if (!($GLOBALS['meta'][$alea])) {
+ include_spip('inc/minipres');
+ echo minipres();
+ spip_log("$alea indisponible");
+ exit;
+ }
}
+ include_spip('auth/sha256.inc');
+ $authenticated[$h] = sha256($h);
}
- include_spip('auth/sha256.inc');
- return sha256($action.$id_auteur.$pass.@$GLOBALS['meta'][$alea]);
Ah oui bien sûr, on est obligé vu le fonctionnement 1 action = 1 hash
En fait je ne vois pas l'intérêt de recalculer le sha256 pour chaque
action : il faut à mon avis s'en servir une fois pour vérifier que
l'auteur est connecté, puis ensuite utiliser simplement $action (ou
son simple md5 + sel) pour savoir s'il a les bons droits.
Les urls ont toujours deux paramètres : l'action et le hash.
C'est le fait de faire varier systématiquement le hash sha256, pour
chaque action, que je critique.
.Gilles
J'ai proposé un second patch qui permet de garder la force du sha256
et la souplesse du cryptage action + auteur (via sha1)
Le principe : le sha256 est intégré à la valeur cryptée en sha1, le
rendant "impossible" à décrypter