spip/spip | 5 commits
Par Matthieu Marcillaud, le 24 février 2022 à 11h28min :
Déplacement de Chiffrer dans ecrire/src en prévision d’un futur autoloader
Modifié
ecrire/auth/spip.php
ecrire/inc/chiffrer.php
ecrire/inc/securiser_action.php
ecrire/install/etape_3b.php
Détails : https://git.spip.net/spip/spip/commit/2852eb97ad4470ed2066fe9299084661efd16c13
==============================
Par Matthieu Marcillaud, le 24 février 2022 à 11h37min :
Chiffrement plus poussé : pad / unpad du message + hash si password (g0uZ)
- Utiliser sodium_pad et sodium_unpad sur le message à chiffrer
- Hacher un password en sha256 dans le chiffrement s’il sert comme clé.
C’est un compromis suffisant.
Modifié
ecrire/src/Chiffrer/Chiffrement.php
==============================
Par Matthieu Marcillaud, le 24 février 2022 à 19h51min :
Ne pas mettre de jeton d’url directement en bdd (cas de l’inscription d’auteur ou du changement de mot de passe) : on le hash avant (g0uZ)
Modifié
ecrire/action/inscrire_auteur.php
==============================
Par Matthieu Marcillaud, le 24 février 2022 à 23h07min :
Suite de 23994e0b1 : Ne pas mettre de jeton d’url directement en bdd (cas de l’inscription d’auteur ou du changement de mot de passe)
On chiffre le jeton en base, mais on permet 2 choses
- Pouvoir retrouver le jeton actuellement utilisé sur un auteur (déchiffrage possible) (Rastapopoulos)
- On limite le nombre de déchiffrages à effectuer en ayant une partie publique du jeton en bdd, qui
sert à filtrer les auteurs dont on veut vérifier les jetons (a priori 1 seul auteur à vérifier)
Introduction d’une fonction auteur_lire_jeton($id_auteur, $autoInit = false), qui lit un jeton
sans écraser le précédent utilisé (ce que fait auteur_attribuer_jeton())
Notons que ces histoires de jeton mériteraient quelques améliorations
- permettre l’expiration des jetons
- permettre plusieurs jetons pour un même auteur directement
Modifié
ecrire/action/inscrire_auteur.php
==============================
Par Matthieu Marcillaud, le 25 février 2022 à 18h11min :
Sécurité des authentifications avec le secret du site (g0uZ) :
- la clé secret_du_site est partagée entre le disque et la base de données. Il faut les 2 pour le calculer (la clé secret_du_site, et la meta secret_du_site).
- Si on demande à chiffrer avec autre chose qu’une clé de longueur adaptée (ie: générée par Chiffrement::keygen()), tel qu’un mot de passe, alors on passe dans sodium_crypto_pwhash(),
qui est la fonction adaptée à ce cas, mais le coût est très élevé dans ce cas (temps / mémoire, même au minimum possible) - On s’arrange donc pour que le secret_du_site obtenu soit effectivement de la taille adaptée à la clé de chiffrement.
Modifié
ecrire/action/inscrire_auteur.php
ecrire/inc/securiser_action.php
ecrire/src/Chiffrer/Chiffrement.php
ecrire/src/Chiffrer/SpipCles.php
Détails : https://git.spip.net/spip/spip/commit/3771cc088cd67c574c66f6a758ec25f719ef8ccf