Faire des qcm simplement - retour accueil
git clone git://bebou.netlib.re/qcm
Log | Files | Refs | README |
commit d3dc88f07ef00345a97a3787fa5110dc65d84c2c parent 1e1936bbea30b9c831c201ffdf5442dfed7b71f6 Auteurice: Arthur Pons <arthur.pons@unistra.fr> Date: Thu, 7 Nov 2024 15:22:54 +0100 Ajout d'une section sécurité dans le README Parce que ce système de pouvoir piper le questionnaire c'est ni plus ni moins que permettre l'exécution de code shell arbitraire. Diffstat:
M | README | | | 28 | ++++++++++++++++++++++++++++ |
1 file changed, 28 insertions(+), 0 deletions(-)
diff --git a/README b/README @@ -125,3 +125,31 @@ il posera trois questions sans intutilé avec trois options de réponses chacune Si l'on veut créer un questionnaire à la volée et que l'on connaît bien la syntaxe ci-dessus on peut simplement lancer `qcm -f -` et écrire les questions. + +## Sécurité + +**Attention !** + +Les fichiers de questionnaire tel qu'ils fonctionnent aujourd'hui sont en +réalité des scripts (catium n'est jamais bien loin). Si entre deux attributs on +écrit `ls` la commande sera exécutée ! Cela peut être super pratique si l'on +fait confiance au script (automatiser des choses entre les questions ou écrire +du shell qui génèrera automatiquement les questions) mais cela est aussi un +immense risque d'un point de vue sécurité. + +Il est donc fortement recommandé de limité l'usage de cette fonctionnalité +à des sources réputées sûres. Par exemple, sur bebou seules les personnes +détenant un compte peuvent utiliser `qcm`. + +Il est possible de régler cette faille en réécrivant `qcm` pour qu'il parse le +fichier plutôt que l'exécuter mais c'est plus compliqué. Deux solutions +possibles : + + 1. lire ligne par ligne et exécuter le code mais uniquement si c'est une + fonction shell (vérifier si le script n'a pas accès à des fonctions autres + que celles déclarées dans le script lui même). + 2. parser les lignes de façon à instancier les variables et faire les appels + "à la main". + +Dans les deux cas il sera de toute façon délicat de garantir la sécurité et on +perd la possibilité de faire de la méta création de questionnaires.