Carnet Wiki

Ou placer les tests d’autorisation pour un CVT

Version 5 — February 2019 YannX

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)