Content Security Policy
Pour améliorer la posture de sécurité des clients ThingWorx, nous avons ajouté Content Security Policy (CSP) à ThingWorx Platform, en commençant par ThingWorx 9.3.15, 9.4.5 et 9.5.1.
CSP
CSP est un outil de sécurité clé utilisé par les navigateurs Web pour vous aider à assurer une protection contre les scripts de site à site (XSS), le détournement de clic et d'autres attaques par injection de données. CSP fonctionne en injectant des en-têtes CSP depuis ThingWorx Platform dans le navigateur Web pour contrôler les données et les ressources dynamiques que le navigateur peut charger et les domaines à partir desquels il peut le faire. Il est impossible de charger des demandes de ressource dans le navigateur si elles proviennent de l'extérieur du domaine autorisé.
Voici des exemples de ressources contrôlées :
Chargement de polices, d'images et de bibliothèques JavaScript
Rendu du contenu d'une source étrangère dans une iFrame dans une application composite ThingWorx
Rendu du contenu d'une page ThingWorx dans une iFrame sur une page étrangère (par exemple, le rendu d'une application composite ThingWorx dans une page Windchill)
L'administrateur configure les directives CSP via ThingWorx Composer. L'en-tête CSP est une combinaison de toutes les directives et constitue la politique CSP. L'en-tête CSP est limité à 1 200 caractères.
ThingWorx a implémenté le niveau 2 de Content Security Policy. Pour plus d'informations sur CSP, consultez les pages suivantes (en anglais) :
Composer
Bannière de la page principale
Pour avertir les administrateurs de cette nouvelle fonctionnalité de sécurité et leur signaler qu'elle n'est pas activée, ThingWorx Composer affiche une bannière d'avertissement non bloquante Content Security Policy (CSP) n'est pas activé. Pour plus d'informations, consultez le Centre d'aide. en haut de Composer.
Cette bannière ne s'affiche que pour les administrateurs, uniquement si CSP n'est pas activé. Les administrateurs peuvent fermer l'avertissement pour leur compte afin qu'il n'apparaisse plus lors des connexions suivantes. Les autres administrateurs continuent de recevoir la bannière tant qu'ils ne choisissent pas de la fermer. La bannière comprend un lien vers la rubrique du Centre d'aide dédiée à Content Security Policy.
Configuration de CSP
Les administrateurs configurent CSP via la sous-page Règles de Content Security Policy du sous-système de plateforme. Sur cette page, les administrateurs peuvent ajouter et modifier des directives définissant la politique. Pour plus d'informations, consultez la rubrique Configuration des valeurs d'en-tête de Content Security Policy.
Activation de CSP
CSP est activé en définissant un nouveau paramètre dans platform-settings.json : “EnableContentSecurityPolicyFilter”: true.
Si "EnableContentSecurityPolicyFilter" est défini sur vrai, la protection CSP est activée. Si "EnableContentSecurityPolicyFilter" est défini sur faux ou n'est pas inclus dans platform-settings.json, CSP est désactivé.
Les instructions d'installation et de mise à niveau sont disponibles dans la section Installation et mise à niveau du Centre d'aide.
Nouvelle installation de ThingWorx Platform avec le filtre CSP
Installation manuelle
Programme d'installation de ThingWorx Foundation
Mise à niveau de ThingWorx vers des versions qui prennent en charge CSP
Pour effectuer une mise à niveau vers une version de maintenance, consultez la rubrique Mise à niveau vers une version de maintenance.
Pour effectuer une mise à niveau manuelle sous Windows, consultez les rubriques suivantes :
Pour une mise à niveau manuelle sous Linux, consultez les rubriques suivantes :
Pour effectuer une mise à niveau via le programme d'installation de ThingWorx Foundation, consultez la rubrique Mise à niveau via le programme d'installation.
Activer ou désactiver CSP dans un environnement existant
Pour activer ou désactiver CSP dans un environnement existant, procédez comme suit :
1. Définissez le marqueur EnableContentSecurityPolicyFilter sur vrai dans la section BasicSettings sous PlatformSettingsConfig du fichier platform-settings.json.
2. Redémarrez le serveur Tomcat.
* 
Au démarrage de ThingWorx, les configurations ClickjackFilter du fichier web.xml sont automatiquement migrées vers CSP si toutes les conditions suivantes sont remplies :
Le filtre CSP est activé.
Le filtre de protection contre le détournement de clic a été configuré dans web.xml.
Le filtre CSP n'est pas déjà configuré par les administrateurs ThingWorx dans ThingWorx Composer.
Migration des paramètres ClickjackFilter vers CSP
Au démarrage de ThingWorx, les configurations ClickjackFilter sont automatiquement migrées vers CSP si les conditions suivantes sont remplies :
Le filtre Content Security Policy est activé, ce qui signifie que EnableContentSecurityPolicyFilter est défini sur vrai.
Le filtre de protection contre le détournement de clic a été configuré à l'aide du fichier web.xml.
Le filtre CSP n'est pas encore configuré à partir de l'interface utilisateur.
ClickjackFilter peut être configuré dans l'un des trois modes suivants : SAMEORIGIN, DENY et ALLOWLIST.
Si ClickjackFilter a été configuré sur SAMEORIGIN, rien n'est migré, car il s'agit de la configuration par défaut de CSP pour frame-ancestors.
<filter>
<filter-name>ClickjackFilterSameOrigin</filter-name>
<filter-class>com.thingworx.security.filter.ClickjackFilter</filter-class>
<init-param>
<param-name>mode</param-name>
<param-value>SAMEORIGIN</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>ClickjackFilterSameOrigin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Si ClickjackFilter a été configuré sur DENY, l'en-tête CSP frame-ancestors sera configuré sur 'none'.
<filter>
<filter-name>ClickjackFilterDeny</filter-name>
<filter-class>com.thingworx.security.filter.ClickjackFilter</filter-class>
<init-param>
<param-name>mode</param-name>
<param-value>DENY</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ClickjackFilterDeny</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Si ClickjackFilter a été configuré sur ALLOWLIST, les en-têtes CSP frame-ancestors et frame-src seront configurés pour autoriser les domaines configurés.
<filter>
<filter-name>ClickjackFilterAllowList</filter-name>
<filter-class>com.thingworx.security.filter.ClickjackFilter</filter-class>
<init-param>
<param-name>mode</param-name>
<param-value>ALLOWLIST</param-value>
</init-param>
<init-param>
<param-name>domains</param-name>
<param-value>http://example.com</param-value>
</init-param>
</filter>
<filter>
<filter-mapping>
<filter-name>ClickjackFilterAllowList</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Est-ce que cela a été utile ?