openMairie.org | Démonstration | Documentation | Forum

Prop0075 - Modernisation de la substitution du remplacement des doubles guillemets

Porteur principal : Laurent Groleau

Porteur secondaire : Stéphane Vicedo

Résumé

Rendre plus efficace la protection contre la saisie de codes javascript dans les formulaires.

Motivation

Dans la classe formulaire, lors de la récupération des valeurs postées, on remplace les " par des '. Cela protège d’un attribut onMouseOver="alert('A')"; mais pas d’un attribut onMouseOver='alert(1)'; ni d’une balise <script> et cela corrompt les sous-états qui utilisent des alias de champ avec espace, par exmple SELECT nb_total as "nb total".

Pré-requis

aucun

Proposition et implémentation

Branche faite depuis OM 4.9.2 : .../openmairie_exemple/branches/prop0075-substitution_guillemet/

R4528 & 4529

Risques

Cela ne pas couvre pas les formulaires HTML n’utilisant pas la classe formulaire.
Testé manuellement sur openDébitDeBoisson (OM 4.9.0) : déplacement d’un point géographique et modification du paramétrage d’un flux
Testé manuellement sur openMarchéForain (OM 4.9.2) : modification d’un sous-état avec requête SQL comportant des ".

Reste à tester la non-régression sur OM …

1 J'aime

Bonjour,

En pièce jointe le résultat de l’exécution des tests sur notre plateforme.
Résultat : 54/58
4 fails explicables :

15:55:15 Synchronisation des utilisateurs avec un annuaire LDAP :: On teste… | FAIL |
15:57:31 Page should have contained text ‹ Il y a 4 utilisateur(s) présent(s) dans l’annuaire et non présent(s) dans la base => 4 ajout(s) › but did not.
15:57:31 ------------------------------------------------------------------------------
=> Notre plateforme n’accède pas au web

16:03:59 Pagination en formulaire :: Vérifie la pagination sur un formulaire. | FAIL |
16:04:02 NoSuchElementException: Message: Cannot locate option with value: 15
16:04:02 ------------------------------------------------------------------------------
=> Fail de la branche OM4.10-dev

16:04:02 Pagination en sous-formulaire :: Vérifie la pagination sur un sous… | FAIL |
16:04:09 NoSuchElementException: Message: Cannot locate option with value: 15
16:04:09 ------------------------------------------------------------------------------
=> Idem

16:48:05 Recherche simple dans un SOUSTAB :: Vérifie le bon fonctionnement … | FAIL |
16:48:44 Keyword ‹ Element Should Contain › failed after retrying for 20 seconds. The last error was: Element ‹ css=#sousform-om_parametre .pagination-text › should have contained text ‹ 1 - 1 enregistrement(s) sur 1 = [test_032_éa ›‹ ç] › but its text was ‹ 1 - 1 enregistrement(s) sur 1 = [test_032_] ›.
16:48:44 ------------------------------------------------------------------------------
=> Visiblement un problème d’AJAX et de temps d’exécution, un wait pourrait résoudre le problème. Le résultat semble aléatoire sur ce test. Idem 4.10.0-dev

PROP75 Résultat test.txt (16,4 Ko)
Ici l’exécution témoin de la 4.10.0-dev : 4.10.0-dev Résultat test.txt (16,1 Ko)

1 J'aime

MISE A JOUR

Proposition et implémentation

Branche faite depuis OM 4.9.2 : .../openmairie_exemple/branches/prop0075-substitution_guillemet/

Centralisation de la substitution , avec encodage HTML des " pour affichage et décodage pour traitement , avec toujours le filtrage du contenu JS

Risques

à re-tester suite aux commit 4601 , 4602 et 4621 et la correction du commit 4627

1 J'aime