Definizione del modello ThingWorx in Composer > Protezione > Abilitazione di mashup incorporati nelle iFrame
Abilitazione di mashup incorporati nelle iFrame
Per clickjacking si intende l'azione di un utente malintenzionato che utilizza un frame per visualizzare un sito e applica uno o più livelli invisibili sul sito, inducendo l'utente a fare clic su un oggetto nel livello invisibile. Una difesa contro il clickjacking consiste nell'utilizzare intestazioni di risposta del server che indicano al browser se è sicuro inserire la pagina in un frame. A causa delle differenze di conformità dei browser, è necessario utilizzare due intestazioni diverse per indicare i domini di cui è possibile eseguire il framing. Tali intestazioni sono descritte di seguito. ThingWorx utilizza queste intestazioni permettendo così all'amministratore di impedire completamente il framing oppure di consentire solo il framing dalla propria origine o da un dominio specifico.
Descrizioni delle intestazioni
Di seguito sono riportate le intestazioni utilizzate per contrastare il clickjacking.
X-Frame-Options
DENY - La pagina non può essere visualizzata in un frame, indipendentemente dal sito che tenta di visualizzarla.
SAMEORIGIN - La pagina può essere visualizzata solo in un frame nella stessa origine della pagina.
ALLOW-FROM http://example.com - La pagina può essere visualizzata solo in un frame sull'origine specificata.
Per un elenco dei browser che supportano X-Frame-Options, vedere https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Limitations.
Content-Security-Policy
frame-ancestors ‘none’ - Impedisce il caricamento caricare risorse in un frame da qualsiasi origine.
frame-ancestors ‘self’ - Consente il caricamento di risorse in un frame, ma solo dalla stessa origine.
frame-ancestors domain1.com domain2.com - Consente il caricamento di risorse in un frame, ma solo dai domini nell'elenco specificato.
Per un elenco dei browser che supportano il livello 2 di Content Security Policy Level, vedere http://caniuse.com/#feat=contentsecuritypolicy2.
Configurazione di ThingWorx
ThingWorx supporta entrambe le intestazioni tramite l'utilizzo di un filtro di richiesta HTTP. L'amministratore può attivare o disattivare uno dei tre filtri ClickjackFilterDeny, ClickjackFilterSameOrigin e ClickjackFilterWhiteList annullando il commento di una delle tre mappature di filtro nel file web.xml dell'applicazione ThingWorx.
Ad esempio:
<!-- use the Deny version to exclude all framing -->
<!--
<filter-mapping>
<filter-name>ClickjackFilterDeny</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-->
<!-- use the SameOrigin version to allow your application to frame, but nobody else -->
<!--
<filter-mapping>
<filter-name>ClickjackFilterSameOrigin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-->
<!-- use the WhiteList version to allow framing from specified domains -->
<filter-mapping>
<filter-name>ClickjackFilterWhiteList</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Non sono necessarie altre configurazioni per ClickjackFilterDeny o ClickjackFilterSameOrigin. Se l'amministratore sceglie di utilizzare ClickjackFilterWhiteList, è necessario aggiungere i domini accettati nel valore del parametro "domains" dei filtri.
Ad esempio:
<filter>
<filter-name>ClickjackFilterWhiteList</filter-name>
<filter-class>com.thingworx.security.filter.ClickjackFilter</filter-class>
<init-param>
<param-name>mode</param-name>
<param-value>WHITELIST</param-value>
</init-param>
<init-param>
<param-name>domains</param-name>
<param-value>http://media-pc:8080
http://192.168.152.133:8080 http://domainY.com</param-value>
</init-param>
</filter>
I domini specificati devono essere nel formato indicato, un elenco separato da spazi che include lo schema (HTTP). L'elenco di domini indicato precedentemente funziona con tutti i browser.