4.0
1.8
1.9.1
1.9.2
2.0
2.1
3.0
3.1
3.2
4.0
4.1
boutons-danger
dev-sortable
dev/autoloader
dev/instituer_ergo
dev_infos_image
fix/valider_url_distante
fix_modifier_login
issue_4101
issue_4277_bis
issue_4678
issue_4705
issue_4717
issue_4946
issue_5032_ini_set
issue_5056_composer_road
issue_5215
issue_5242
issue_deprecated_null_sql_quote
master
spip-1.8.3b
spip-1.9.1i
spip-1.9.2f
spip-1.9.2g
spip-1.9.2h
spip-1.9.2i
spip-1.9.2j
spip-1.9.2k
spip-1.9.2m
spip-1.9.2n
spip-1.9.2o
spip-1.9.2p
spip-2-stable
spip-2.0.0
spip-2.0.1
spip-2.0.10
spip-2.0.11
spip-2.0.12
spip-2.0.13
spip-2.0.14
spip-2.0.15
spip-2.0.16
spip-2.0.17
spip-2.0.18
spip-2.0.19
spip-2.0.2
spip-2.0.20
spip-2.0.21
spip-2.0.22
spip-2.0.23
spip-2.0.24
spip-2.0.25
spip-2.0.26
spip-2.0.3
spip-2.0.5
spip-2.0.6
spip-2.0.7
spip-2.0.8
spip-2.0.9
spip-2.1.0
spip-2.1.1
spip-2.1.10
spip-2.1.11
spip-2.1.12
spip-2.1.13
spip-2.1.14
spip-2.1.15
spip-2.1.16
spip-2.1.17
spip-2.1.18
spip-2.1.19
spip-2.1.2
spip-2.1.20
spip-2.1.21
spip-2.1.22
spip-2.1.23
spip-2.1.24
spip-2.1.25
spip-2.1.26
spip-2.1.27
spip-2.1.28
spip-2.1.29
spip-2.1.3
spip-2.1.30
spip-2.1.4
spip-2.1.5
spip-2.1.6
spip-2.1.7
spip-2.1.8
spip-2.1.9
spip-3.0.0
spip-3.0.0-alpha1
spip-3.0.0-beta
spip-3.0.0-beta2
spip-3.0.0-rc
spip-3.0.1
spip-3.0.10
spip-3.0.11
spip-3.0.12
spip-3.0.13
spip-3.0.14
spip-3.0.15
spip-3.0.16
spip-3.0.17
spip-3.0.18
spip-3.0.19
spip-3.0.2
spip-3.0.20
spip-3.0.21
spip-3.0.22
spip-3.0.23
spip-3.0.24
spip-3.0.25
spip-3.0.26
spip-3.0.27
spip-3.0.28
spip-3.0.3
spip-3.0.4
spip-3.0.5
spip-3.0.6
spip-3.0.7
spip-3.0.8
spip-3.0.9
spip-3.1.0
spip-3.1.0-alpha
spip-3.1.0-beta
spip-3.1.0-rc
spip-3.1.0-rc2
spip-3.1.0-rc3
spip-3.1.1
spip-3.1.10
spip-3.1.2
spip-3.1.3
spip-3.1.4
spip-3.1.5
spip-3.1.6
spip-3.1.7
spip-3.1.8
spip-3.1.9
spip-3.2-alpha-1
spip-3.2.0
spip-3.2.0-beta
spip-3.2.0beta2
spip-3.2.0beta3
spip-3.2.1
spip-3.2.2
spip-3.2.3
spip-3.2.4
v1.8.3+b
v1.9.1+i
v1.9.2+f
v1.9.2+g
v1.9.2+h
v1.9.2+i
v1.9.2+j
v1.9.2+k
v1.9.2+m
v1.9.2+n
v1.9.2+o
v1.9.2+p
v2.0.0
v2.0.1
v2.0.10
v2.0.11
v2.0.12
v2.0.13
v2.0.14
v2.0.15
v2.0.16
v2.0.17
v2.0.18
v2.0.19
v2.0.2
v2.0.20
v2.0.21
v2.0.22
v2.0.23
v2.0.24
v2.0.25
v2.0.26
v2.0.3
v2.0.5
v2.0.6
v2.0.7
v2.0.8
v2.0.9
v2.1.0
v2.1.1
v2.1.10
v2.1.11
v2.1.12
v2.1.13
v2.1.14
v2.1.15
v2.1.16
v2.1.17
v2.1.18
v2.1.19
v2.1.2
v2.1.20
v2.1.21
v2.1.22
v2.1.23
v2.1.24
v2.1.25
v2.1.26
v2.1.27
v2.1.28
v2.1.29
v2.1.3
v2.1.30
v2.1.4
v2.1.5
v2.1.6
v2.1.7
v2.1.8
v2.1.9
v3.0.0
v3.0.0-alpha.1
v3.0.0-beta
v3.0.0-beta.2
v3.0.0-rc
v3.0.1
v3.0.10
v3.0.11
v3.0.12
v3.0.13
v3.0.14
v3.0.15
v3.0.16
v3.0.17
v3.0.18
v3.0.19
v3.0.2
v3.0.20
v3.0.21
v3.0.22
v3.0.23
v3.0.24
v3.0.25
v3.0.26
v3.0.27
v3.0.28
v3.0.3
v3.0.4
v3.0.5
v3.0.6
v3.0.7
v3.0.8
v3.0.9
v3.1.0
v3.1.0-alpha
v3.1.0-beta
v3.1.0-rc
v3.1.0-rc.2
v3.1.0-rc.3
v3.1.1
v3.1.10
v3.1.11
v3.1.12
v3.1.13
v3.1.14
v3.1.15
v3.1.2
v3.1.3
v3.1.4
v3.1.5
v3.1.6
v3.1.7
v3.1.8
v3.1.9
v3.2-alpha.1
v3.2.0
v3.2.0-alpha.1
v3.2.0-beta
v3.2.0-beta.2
v3.2.0-beta.3
v3.2.1
v3.2.10
v3.2.11
v3.2.12
v3.2.13
v3.2.14
v3.2.15
v3.2.2
v3.2.3
v3.2.4
v3.2.5
v3.2.6
v3.2.7
v3.2.8
v3.2.9
v4.0.0
v4.0.0-alpha
v4.0.0-beta
v4.0.1
v4.0.2
v4.0.3
v4.0.4
v4.0.5
v4.0.6
v4.0.7
v4.1.0
v4.1.0-alpha
v4.1.0-beta
v4.1.0-rc
v4.1.1
v4.1.2
Labels
Amélioration, nouvelle fonctionnalité APIs authentification base de données bug
Ca ne fonctionne pas code généré compilo css divers documentation doublon
Ce ticket est un doublon ergonomie espace privé filtres et balises formulaires Inscription installation invalide
Ticket invalide javascript langues LDAP plugin PostgreSQL refusé
Ignoré, c'est comme Ca... sécurité traduction
Apply labels
Clear labels
accessibilité
amélioration
Amélioration, nouvelle fonctionnalité APIs authentification base de données bug
Ca ne fonctionne pas code généré compilo css divers documentation doublon
Ce ticket est un doublon ergonomie espace privé filtres et balises formulaires Inscription installation invalide
Ticket invalide javascript langues LDAP plugin PostgreSQL refusé
Ignoré, c'est comme Ca... sécurité traduction
No Label
accessibilité
amélioration
APIs
authentification
base de données
bug
code généré
compilo
css
divers
documentation
doublon
ergonomie
espace privé
filtres et balises
formulaires
Inscription
installation
invalide
javascript
langues
LDAP
plugin
PostgreSQL
refusé
sécurité
traduction
Milestone
Set milestone
Clear milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
Assign users
Clear assignees
No Assignees
9 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.
No due date set.
Dependencies
This issue currently doesn't have any dependencies.
Reference in new issue
There is no content yet.
Delete Branch '%!s(MISSING)'
Deleting a branch is permanent. It CANNOT be undone. Continue?
No
Yes
Une proposition fonctionnelle pour SPIP 4.0 sous forme de plugin permettant d'améliorer la sécurité de l'authentification par mot de passe/hash de SPIP :
https://git.spip.net/spip-contrib-extensions/chiffrer
Peut on planifier son intégration dans le core ou dans -dist ?
Amha ça concerne plus la 4.1, donc je basculerais bien sur ce jalon, mais attendons le retour des autres.
@g0uZ Si je comprend bien tu proposes que ça soit intégré dans le core. C'est super si ça améliore la sécurité, mais c'est inquiétant aussi car ça impacte les comptes et mot de passe de tous les utilisateurs, et que c'est un chemin sans retour...
Alors pourrais tu préciser :
Basiquement, suite à la mise en place, les utilisateurs se rendent ils compte du changement ? Est-ce qu'on leur demande de faire quelque chose pour pouvoir continuer à s'identifier, genre changer leur mdp ou visiter une url ?
Y a t il des conséquences en l'état pour d'autres fonctions de SPIP, API ou pour des parties de code de plugins ?
Tu écris que « La fonctionnalité de perte de mot de passe n'a pas encore subit un traitement similaire, de manière générale tous les aléas secrets générés devraient y passer » : est-ce que ces fonctionnalités (oubli mdp et autres usages des aléas secrets générés) fonctionnent quand même (sans bénéficier du supplément de sécurité) avec ce patch en l'état ?
Si je comprends bien, ce que tu proposes là est une réponse très concrête à cette objection trouvée sur Twitter : https://twitter.com/breard_r/status/1414993786518790151?t=pFy1eL-Rqfb74t8gliQL2w&s=09
Je crois pas realEt. Breard_r sur twitter est soit de mauvaise foi ou soit dans l'ignorance, car les mots de passe dans SPIP sont cryptés salés. C'est pour ça que g0uz par le de
poivre
et pas desel
, car c'est une couche en plus : le poivre empêche de nuire même si on a chopé le mdp crypté avec le sel.Non c'est transparent pour l'utilisateur. On attend seulement d'avoir son mot de passe en clair pour pouvoir le hasher avec un nouvel algorithme et MAJ le champ pass de la table spip_auteurs dans la base de données.
Non, mais il doit rester des endroits ou on utilise sha256 (création/modification de l'auteur mais ce n'a pas de conséquence : l'authentification supportant tous les algorithmes de hash possibles (MD5/SHA256/bcrypt/argon2i)
Le seul fonctionnement qui est supprimé est celui permettant de s'authentifier directement avec le hash du pass : vulnérable a des attaques de type Pass The Hash.
Tout fonctionne sans problème. Ce que je veux dire par là c'est que le bénéfice en sécurité est moindre/nul tant que tous les cas permettant de s'authentifier avec une donnée contenu dans la DB ne sauront pas correctement gérés (avec chiffrer()/dechiffrer() par exemple).
Suite à #5059 il me semble essentiel d'intégrer cette évolution dans la 4.1 que l'on s'apprête à releaser même si il faut prendre un peu plus de temps pour tester.
J'ai fait une revue du plugin chiffrer de @g0uZ qui me parait assez simple à intégrer. Essentiellement il supprime tout ce qui est hashage côté client, on se repose maintenant sur https comme tout le monde, et côté serveur il a une mécanique beaucoup plus safe et robuste qui repose sur les fonctions natives de PHP.
Je peux préparer une PR sur la 4.1 pour tests et avis si ça va à tout le monde
totalement ok pour https + son plugin à intégrer en core
Je ne sais qu’en penser…
Ok on est en beta, c’est possible, mais c’est un changement vraiment pas anodin quand même. Tu envisagerais pour quand de préparer une PR ?
Ensuite sur l’implémentation de g0oZ à base de
GLOBALS
, non. Si on peut éviter ça please…Ça voudrait dire a minima introduire dans sa proposition une fonction
lire_cle('cle_secrete')
qui ferait sa tambouille (statique?)Probablement renommer les fonctions
initialiser_cle
eninitialiser_cles
restaurer_cle
enrestaurer_cles
Que le fichier
cles.php
returne un array (ne peuple pas de globale)amha le respect du calendrier de "release accéléré" pour SPIP ne semble pas un argument suffisant au regard du gain (important !) de sécurité que ce changement amènera...
=> idem Rasta donc : totalement OK pour l'intégration de ce changement maintenant
quid du fonctionnement pour les sites qui ne sont pas en HTTPS ? (malgré la généralisation actuelle on en croise encore quelques uns...)
Je me posais la même question. Est-ce qu'il y aurait moyen d'imposer :
On revient sur une situation identique à tous @cy.altern : securité = https et si tu es en http le mot de passe navigue en clair (comme te l'indique ton navigateur)
Pas du tout une bonne idée pour au moins 2 cas :
effectivement, oublions
intégré par #5064