ThingWorx Modelldefinition in Composer > Sicherheit > Eingebettete Mashups in iFrames zulassen
Eingebettete Mashups in iFrames zulassen
Clickjacking bedeutet, dass ein Angreifer einen Frame verwendet, um eine Site anzuzeigen, und eine oder mehrere unsichtbare Schichten über der Site anwendet, damit der Benutzer auf ein Element der unsichtbaren Schicht klickt. Ein Verteidigungsmechanismus gegen Clickjacking verwendet Antwortkopfzeilen vom Server, die den Browser informieren, ob es in Ordnung ist, die Seite mit einem Frame zu versehen. Aufgrund von Compliance-Unterschieden in Browsern müssen zwei unterschiedliche Kopfzeilen verwendet werden, um Domänen anzugeben, für die Frames zulässig sind. Diese Kopfzeilen werden unten beschrieben. ThingWorx verwendet diese Kopfzeilen, damit der Administrator Framing verweigern, nur Framing vom eigenen Ursprung zulassen oder Framing von einer bestimmten Domäne zulassen kann.
Kopfzeilenbeschreibungen
Die Kopfzeilen zum Schutz vor Clickjacking sind folgende:
X-Frame-Options
DENY – Die Seite kann nicht in einem Frame angezeigt werden, unabhängig von der Site, die versucht, sie anzuzeigen.
SAMEORIGIN – Die Seite kann nur in einem Frame mit demselben Ursprung wie die Seite angezeigt werden.
ALLOW-FROM http://example.com – Die Seite kann nur in einem Frame mit dem angegebenen Ursprung angezeigt werden.
Eine Liste von Browsern, die X-Frame-Options unterstützen, finden Sie unter https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Limitations.
Content-Security-Policy
frame-ancestors ‘none’ – verhindert das Laden von Ressourcen in einem Frame mit einem beliebigen Ursprung.
frame-ancestors ‘self’ – ermöglicht das Laden von Ressourcen in einem Frame, aber nur mit demselben Ursprung.
frame-ancestors domain1.com domain2.com – ermöglicht das Laden von Ressourcen in einem Frame, aber nur von Domänen in der angegebenen Liste.
Eine Liste von Browsern, die Content Security Policy Level 2 unterstützen, finden Sie unter http://caniuse.com/#feat=contentsecuritypolicy2.
ThingWorx Konfiguration
ThingWorx unterstützt beide Kopfzeilen durch die Verwendung eines HTTP-Anforderungsfilters. Der Administrator kann einen der drei Filter ClickjackFilterDeny, ClickjackFilterSameOrigin und ClickjackFilterWhiteList aktivieren oder deaktivieren, indem die Auskommentierung einer der drei Filterzuordnungen in der Datei "web.xml" der ThingWorx Anwendung aufgehoben wird.
Beispiel:
<!-- 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>
Es ist keine weitere Konfiguration für ClickjackFilterDeny oder ClickjackFilterSameOrigin erforderlich. Wenn der Administrator ClickjackFilterWhiteList verwendet, muss er die akzeptierten Domänen im Parameterwert "domains" des Filters hinzufügen.
Beispiel:
<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>
Die angegebenen Domänen müssen das gezeigte Format aufweisen, eine durch Leerzeichen getrennte Liste, die das Schema (HTTP) beinhaltet. Die Domänenliste, die oben angezeigt wird, funktioniert mit allen Browsern.