back
Avatar of Pascal Bihler
Author: Pascal Bihler
03. mai 2022

Test des pages web protégées par la stratégie de sécurité du contenu (CSP) avec Firefox

La stratégie de sécurité du contenu (Content Security Policies) est un outil puissant pour rendre difficiles les attaques par cross site scripting sur les sites et applications web. Le serveur web envoie des en-têtes de réponse avec une ou plusieurs lignes d'en-tête Content-Security-Policy au navigateur, définissant explicitement par exemple quel code Javascript peut être exécuté dans le contexte de la page web.

Lorsque vous testez une application web avec QF-Test, celui-ci doit interagir étroitement avec l'application afin de reconnaître les composants ou d'exécuter des contrôles ou de pouvoir enregistrer un test. QF-Test exécute par exemple du code Javascript dans le contexte de la page web via l'interface WebDriver de QF-Test - et ici une règle CSP stricte peut interférer. Par conséquent, QF-Test démarre le navigateur dans un mode qui ignore les lignes d'en-tête de la politique de sécurité du contenu.

Malheureusement, ceci n'est plus possible aussi facilement avec Firefox depuis la version 99 - avec le résultat que QF-Test va se présenter avec une exception DocumentNotLoaded pour les applications ainsi protégées.

Pour éviter le problème, en gros, vous avez trois possibilités :

  1. Exécuter l'application web dans un "mode test" sans les en-têtes CSP.
  2. Supprimer les en-têtes CSP via un proxy.
  3. Supprimer les en-têtes CSP via un module complémentaire du navigateur.

Exécuter l'application en "mode test"

Le "mode test" est la meilleure solution lorsque vous avez de l'influence sur l'application web - lancer l'application sur un serveur de test dans un mode spécial, "sans CSP". Ainsi, les problèmes ne se produiront plus lors des tests avec QF-Test.

Supprimer les en-têtes CSP via le proxy

Au début d'un test web, vous pouvez spécifier un proxy via lequel charger les pages web dans les paramètres proxyAddress et proxyPort de l'appel de procédure à qfs.web.browser.settings.doStartupSettings. Dans le proxy, vous pouvez ensuite supprimer les en-têtes de réponse gênants, par exemple avec nginx, squid, mitmproxy ou avec le proxy Java browsermob-proxy qui peut même être configuré via des scripts SUT.

Supprimer les en-têtes CSP via un module complémentaire du navigateur

La troisième option consiste à supprimer l'en-tête dans le navigateur via un module complémentaire, par exemple avec ModHeader ou avec simple-modify-headers. C'est l'approche recommandée par les développeurs de Mozilla.

Installation :

  1. Créez une nouvelle séquence d'installation avec l'assistant de démarrage rapide de QF-Test en ouvrant la page de test https://content-security-policy.com/browser-test/. Lorsque toutes les cases de la page sont affichées en rouge, tout va bien (pour le test), si elles sont vertes, le CSP n'est pas ignoré.
  2. Naviguez dans ce navigateur vers le site d'installation de l'add-on, par exemple https://addons.mozilla.org/de/firefox/addon/simple-modify-header/. Comme QF-Test utilise un profil dédié pour les tests, il est important que l'installation se fasse avec le profil QF-Test.
  3. Installez le module complémentaire en cliquant sur le bouton "Add to Firefox".
  4. Maintenant, une icône de configuration apparaîtra à côté de l'URL sur la droite. Cliquez dessus pour ouvrir la page de configuration (si le navigateur commence à scintiller, vous pouvez fermer le premier onglet).
  5. Définissez une règle valable pour toutes les URL ("Url Patterns* : *"), avec l'action "Delete", le nom de champ d'en-tête Content-Security-Policy et une valeur de champ d'en-tête vide à appliquer sur les réponses du serveur ("Apply on Response"). Cliquez sur "Enregistrer".
  6. Avec "simple modifier les en-têtes", vous devez ensuite activer le module complémentaire via l'icône "START".
  7. Maintenant, lorsque vous fermez le navigateur et exécutez à nouveau la séquence de configuration, les cases de la page de test doivent toutes être rouges.
  8. Et maintenant, même avec des applications protégées par le CSP, vous ne devriez plus rencontrer de problèmes de CSP lors des tests.
New comment
( Will be displayed on the page )
( Will not be displayed on the page )

0 comments