Content Security Policy
Per migliorare il livello di protezione dei clienti ThingWorx, a partire da ThingWorx 9.3.15, 9.4.5 e 9.5.1 abbiamo aggiunto la Content Security Policy (CSP) a ThingWorx Platform.
CSP
La CSP è uno strumento di protezione fondamentale utilizzato per proteggere i browser Web da attacchi di scripting intersito (XSS), clickjacking e da altri attacchi di data injection. Questo strumento consente di specificare i dati dinamici e le risorse che il browser può caricare e da quali domini mediante l'inserimento di intestazioni CSP da ThingWorx Platform nel browser Web. Nel browser non possono essere caricate richieste di risorse provenienti da un dominio non autorizzato.
Di seguito alcuni esempi di risorse controllate:
Caricamento di caratteri, immagini e librerie JavaScript
Rendering di contenuto da un'origine esterna in un iFrame in un mashup ThingWorx
Rendering del contenuto di pagine ThingWorx in un iFrame in una pagina esterna, ad esempio il rendering di un mashup di ThingWorx in una pagina Windchill
L'amministratore configura le direttive CSP tramite ThingWorx Composer. L'intestazione CSP è una combinazione di tutte le regole e costituisce la direttiva CSP. Può contenere un massimo di 1200 caratteri.
ThingWorx ha implementato il livello 2 della Content Security Policy. Per ulteriori informazioni sulla CSP, vedere le pagine seguenti:
Composer
Banner della pagina principale
Per informare gli amministratori di questa nuova funzionalità di protezione e avvertirli che attualmente non è attiva, in ThingWorx Composer viene visualizzato il banner di avviso non bloccante CSP (Content Security Policy) non attivata. Per ulteriori informazioni, vedere l'Help Center. nella parte alta di Composer.
Il banner viene visualizzato solo se la CSP non è attivata e solo per gli amministratori. Gli amministratori possono ignorare l'avviso per il proprio account, in modo che non venga più visualizzato ai successivi accessi. Gli altri amministratori continueranno a visualizzarlo, a meno che non lo ignorino a loro volta. Il banner include un link all'argomento Content Security Policy dell'Help Center.
Configurazione della CSP
Gli amministratori configurano la CSP tramite la sottopagina Regole CSP del sottosistema Piattaforma. In questa pagina gli amministratori possono aggiungere e modificare le direttive che definiscono la regola. Per ulteriori informazioni, vedere Configurazione dei valori delle intestazioni Content Security Policy.
Attivazione della CSP
La CSP viene attivata impostando un nuovo parametro in platform-settings.json: “EnableContentSecurityPolicyFilter”: true.
Se "EnableContentSecurityPolicyFilter" è impostato su true, la protezione CSP è attivata. Se "EnableContentSecurityPolicyFilter" è impostato su false o non è incluso in platform-settings.json, la CSP è disattivata.
Le istruzioni per l'installazione e l'aggiornamento sono disponibili nella sezione Installazione e aggiornamento dell'Help Center.
Nuova installazione di ThingWorx Platform con il filtro CSP
Installazione manuale
Programma di installazione di ThingWorx Foundation
Aggiornare ThingWorx alle versioni che supportano la CSP
Per l'aggiornamento della release di manutenzione, vedere Aggiornamento della release di manutenzione.
Per l'aggiornamento manuale di Windows, vedere gli argomenti seguenti:
Per l'aggiornamento manuale di Linux, vedere gli argomenti seguenti:
Per l'aggiornamento del programma di installazione di ThingWorx Foundation, vedere Aggiornamento del programma di installazione.
Attivare o disattivare la CSP in un ambiente esistente
Per attivare o disattivare la CSP in un ambiente esistente, attenersi alla procedura descritta di seguito.
1. Impostare il flag EnableContentSecurityPolicyFilter su True nella sezione BasicSettings, sotto PlatformSettingsConfig nel file platform-settings.json.
2. Riavviare il server Tomcat.
* 
All'avvio di ThingWorx, le configurazioni del ClickjackFilter vengono migrate automaticamente dal file web.xml alla CSP, purché siano soddisfatte tutte le condizioni seguenti:
Il filtro CSP è attivato.
Il filtro contro il clickjacking è stato configurato nel file web.xml.
Il filtro CSP non è già stato configurato dagli amministratori ThingWorx in ThingWorx Composer.
Migrazione delle impostazioni del ClickjackFilter alla CSP
All'avvio di ThingWorx, le configurazioni del ClickjackFilter vengono migrate automaticamente nella CSP, purché siano soddisfatte le condizioni seguenti:
Il filtro CSP è attivato, ovvero EnableContentSecurityPolicyFilter è impostato su true.
Il filtro contro il clickjacking è stato configurato utilizzando il file web.xml.
Il filtro CSP non è già stato configurato dall'interfaccia utente.
È possibile configurare il ClickjackFilter in una delle tre modalità seguenti: SAMEORIGIN, DENY e ALLOWLIST.
Se il ClickjackFilter è stato configurato per SAMEORIGIN, non viene eseguita alcuna migrazione poiché questa è la configurazione di default della CSP per 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>
Se il ClickjackFilter è stato configurato per DENY, la configurazione dell'intestazione CSP frame-ancestors sarà '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>
Se il ClickjackFilter è stato configurato per ALLOWLIST, le intestazioni CSP frame-ancestors e frame-src verranno configurate per consentire i domini specificati.
<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>
È stato utile?