Carnet Wiki

Ou placer les tests d’autorisation pour un CVT

12:31:22 - RastaPopoulos : ton histoire de retour dans le navigateur, ça peut valoir pour n’importe quel formulaire de SPIP, n’importe quel objet (ou autre qu’objet peu importe)
12:31:26 - YannX : peut-on en tirer/formuler une « règle de principe » pour placer & controler les appels d’autorisation dans les CVT ?
12:31:36 - RastaPopoulos : si on change les droits pour ajouter un article c’est pareil
12:31:47 - RastaPopoulos : donc c’est un problème plus général

12:27:43 - RastaPopoulos : et après ya l’action elle-même, même en dehors du formulaire
12:27:52 - RastaPopoulos : action/editer_auteur etc
12:28:10 - RastaPopoulos : qui peut être appelé même en dehors de tel formulaire CVT fourni par défaut
12:28:17 - RastaPopoulos : et là aussi il devrait y avoir le test d’autorisation

12:17:27 - g0uZ : dans un form CVT, je capte pas a quoi ca sert de faire une vérification sur une autorisation dans C et pas dans V, c’est un trou de sécurité à mon sens
12:17:46 - g0uZ : par exemple editer_auteur fonctionne comme ca
12:17:51 - g0uZ : (pas d impact ou presque)
12:18:20 - YannX : comment fais-tu pour lancer / executer un formulaire sans etre passé par CHarger ?
12:18:22 - g0uZ : enfin grosso merdo l’autorisation creer_auteur sert a rien en l’état
12:19:18 - jmvanel a quitté le canal (Quit : Ping timeout : 268 seconds).
12:20:06 - g0uZ : YannX : imagine que le résultat de l autorisation change au cours du temps
12:20:16 - g0uZ : au départ je peux passer par C
12:20:37 - g0uZ : par exemple la je veux juste mettre une limite sur le nombre d utilisateur qu’on peut créer
12:21:05 - YannX : ok... je n’avais pas pensé au multi-postes/multi-thread
12:22:29 - g0uZ : ce que je constate mon : autoriser_auteur_creer() a beau retourner false je peux créer des users...
12:22:38 - g0uZ : mais pas afficher le form de création
12:24:34 - RastaPopoulos : bah comment tu peux créer tes users si tu peux pas afficher le form ?
12:24:53 - g0uZ : bah pr les permiers je peux
12:25:06 - g0uZ : une fois la limite dépassé, je demande juste a mon browser la page précedente
12:25:17 - RastaPopoulos : ok je vois
12:25:18 - g0uZ : il me recharge le C d avant
12:25:29 - g0uZ : et je peux renvoyer autant de fois le form que je veux
12:25:32 - g0uZ : dc bon
12:26:04 - RastaPopoulos : bah suivant les cas faudrait le mettre partout
12:26:09 - RastaPopoulos : car ya deux choses différentes
12:26:13 - RastaPopoulos : même trois
12:26:44 - RastaPopoulos : ya le problème ergonomique d’interface : on n’a pas à afficher du tout un élément d’interface que l’utilisateur ne devrait pas avoir le droit d’utiliser
12:26:47 - RastaPopoulos : donc ça c’est en amont
12:27:26 - RastaPopoulos : ensuite ya l’utilisation du formulaire s’il est déjà affiché, si on l’a déjà dans l’historique
12:27:43 - RastaPopoulos : et après ya l’action elle-même, même en dehors du formulaire
12:27:52 - RastaPopoulos : action/editer_auteur etc
12:28:10 - RastaPopoulos : qui peut être appelé même en dehors de tel formulaire CVT fourni par défaut
12:28:17 - RastaPopoulos : et là aussi il devrait y avoir le test d’autorisation
12:28:51 - RastaPopoulos : puisque si un autre formulaire, bouton, ou API JSON, que sais-je, utilise cette action plus direct, ça devrait faire un refus si ya pas le droit
12:29:41 - RastaPopoulos : bref : clairement pour moi ya plein d’incohérence et de truc pas solide dans l’édition des objets SPIP, entre les formualires (qui sont UNE interface précis) et les fonctions/actions d’API (qui peuvent être appelés par d’autres formulaires)
12:31:22 - RastaPopoulos : ton histoire de retour dans le navigateur, ça peut valoir pour n’importe quel formulaire de SPIP, n’importe quel objet (ou autre qu’objet peu importe)
12:31:26 - YannX : peut-on en tirer/formuler une « règle de principe » pour placer & controler les appels d’autorisation dans les CVT ?
12:31:36 - RastaPopoulos : si on change les droits pour ajouter un article c’est pareil
12:31:47 - RastaPopoulos : donc c’est un problème plus général
12:38:01 - g0uZ : RastaPopoulos : a mon sens le pb ne se pose que pour les id=new
12:38:35 - RastaPopoulos : pas spécialement g0uZ, tu pourrais très bien avoir le même soucis pour des droits d’édition d’un truc existant
12:38:44 - RastaPopoulos : avoir le droit de le modifier un jour, et pas le lendemain
12:38:47 - g0uZ : imo non, y a les champs _ctf
12:38:48 - g0uZ : ctr*
12:39:00 - RastaPopoulos : pour une quelconque raison inscrite dans la fonction d’autorisation
12:39:08 - RastaPopoulos : quel rapport ?
12:39:35 - RastaPopoulos : l’autorisation tu mets ce que tu veux, les raisons de true ou false dedans peuvent avoir des milliards de choses sans rapports avec la liste des champs
12:39:35 - g0uZ : c’est pas un champ de ctrl justement ?
12:39:47 - g0uZ : avec une valeur pas possible a calculer coté user
12:39:58 - RastaPopoulos : les champs c’est pour ne pas éditer un truc dont les contenus ont changé entre temps
12:40:00 - g0uZ : (j ai jamais regardé a quoi ca servait)
12:40:00 - RastaPopoulos : c’est autre chose
12:40:09 - g0uZ : erf ok
12:40:28 - RastaPopoulos : si quelqu’un d’autres a modifié le contenu depuis que t’as ouvert le formulaire
12:41:36 - g0uZ : ca refuse la modif no ? et ca réaffiche le C ?
12:41:57 - flo2marsnet [ flo2marsn@83.156.136.13] est entré dans le canal.
12:42:16 - RastaPopoulos : ça dit erreur à l’enregistrement g0uZ oui
12:42:35 - RastaPopoulos : et c’est durant le traitement là, enfin même durant l’action d’édition d’objet appelé en traitement
12:42:43 - chankalan a quitté le canal (Quit : Ping timeout : 252 seconds).
12:43:48 - g0uZ : beh ca protège bien les éditions non ? on ne peut pas réutiliser les valeurs de _ctr (avec page précédente) une fois que les valeurs de l objet on changé
12:44:00 - g0uZ : obligé de passer par C pour les recalculer et donc dans l autorisation
12:44:03 - RastaPopoulos : mais quel rapport avec l’autorisation ?
12:44:28 - RastaPopoulos : ça ne fait que vérifier qu’on édite pas un truc déjà édité entre temps
12:44:33 - RastaPopoulos : c’est sans rapport avec le *droit* de le faire
12:44:39 - RastaPopoulos : qui est défini dans l’autorisation ad hoc
12:44:52 - RastaPopoulos : et où tu mets absolument ce que tu veux, si tu fais ton PHP
12:45:35 - RastaPopoulos : donc ton problème d’autorisation, ça vaut pour absolument n’importe quel formulaire SPIP, d’édition d’objet ou autre, nouveau ou existant
12:45:45 - RastaPopoulos : c’est un problème général de conception, m’est-avis
12:46:40 - YannX : la solution ? remettre l’appel a l’autorisation a chaque fois : C et T ?
12:46:58 - RastaPopoulos : je ne sais pas, il faudrait en discuter
12:47:17 - g0uZ : beh a mon sens c’est pe un effet de bord, mais les _ctr protège l « édition directe » (sans passer par C) non autorisé
12:47:35 - RastaPopoulos : je vois pas comment g0uZ
12:47:47 - RastaPopoulos : si les champs n’ont pas changé t’as toujours le droit d’éditer
12:47:52 - g0uZ : de ce que je comprend sans _ctr avec des valeurs valides : pas d’édition et pour les avoirs ces valeurs de _ctf il faut passer par C
12:47:58 - RastaPopoulos : or peut-être que l’autoriser PHP elle ne te l’autorise pas
12:48:14 - g0uZ : et dans C on test l autorisation
12:48:39 - g0uZ : enfin me mélange pe les pinceux
12:48:41 - RastaPopoulos : mais tant que les champs n’ont pas changé, ces valeurs de contrôle sont toujours valides
12:48:48 - g0uZ : pinceaux*
12:48:50 - RastaPopoulos : je ne comprends pas pourquoi tu parles de ces valeurs de controle
12:48:50 - g0uZ : oui ca
12:48:59 - RastaPopoulos : elles ne testent que si les valeurs ont changé
12:49:08 - RastaPopoulos : si les valeurs ont pas changé, elles sont toujours valables
12:49:14 - RastaPopoulos : donc tu peux toujours modifier l’objet
12:49:27 - RastaPopoulos : alors que par contre l’autorisation de l’API autoriser() ne te l’autorise PLUS
12:49:31 - RastaPopoulos : comme ton problème à toi
12:49:34 - g0uZ : ok
12:49:42 - RastaPopoulos : si la fonction autoriser_truc a été modifié comme tu l’as fait
12:49:47 - g0uZ : bah faut que les valeurs de ctr_ dépende de l autorisation
12:49:52 - g0uZ : ca réglerai pe le pb
12:50:57 - RastaPopoulos : mais c’est possible qu’à terme il faille mettre l’autorisation, dans charger(), dans verifier() ET dans l’action hors formulaire (qui peut être appelé par d’autres trucs)
12:50:58 - g0uZ : [07/02/2019 12:49] je ne comprends pas pourquoi tu parles de ces valeurs de controle // il faut avoir l autorisation de modifier l objet en question pour les avoirs no ?
12:51:56 - g0uZ : jvais allez voir les autres form histoire de
12:52:12 - g0uZ : editer_auteur c est qd mm particulié
12:52:41 - RastaPopoulos : g0uZ : https://core.spip.net/projects/spip/repository/entry/spip/ecrire/inc/editer.php#L427

bref : clairement pour moi ya plein d’incohérence et de truc pas solide dans l’édition des objets SPIP, entre les formualires (qui sont UNE interface précis) et les fonctions/actions d’API (qui peuvent être appelés par d’autres formulaires)

YannX - Mise à jour :9 février 2019 à 11h46min