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 ClickjackFilterAllowList 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 AllowList version to allow framing from specified domains -->
<filter-mapping>
<filter-name>ClickjackFilterAllowList</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Es ist keine weitere Konfiguration für ClickjackFilterDeny oder ClickjackFilterSameOrigin erforderlich. Wenn der Administrator ClickjackFilterAllowList verwendet, muss er die akzeptierten Domänen im Parameterwert "domains" des Filters hinzufügen.
Beispiel:
<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://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.
[Erforderlich für SSO] Kundenanwendungsänderung
Sie müssen die Eintrittspunkt-URL ändern, um Mashups im iFrame zu öffnen.
Die ThingWorx Eintrittspunkte, die auf ein Mashup verweisen, verwenden derzeit eines der folgenden Formate:
https://<Thingworx Servername>/Thingworx/Runtime/index.html?mashup=<Name des Haupt-Mashups>
https://<Thingworx Servername>/Thingworx/Thingworx/Mashups/<Name des Haupt-Mashups>
Sie müssen das Format des Eintrittspunkts wie folgt ändern, um Mashups im iFrame zu öffnen:
https://<Thingworx Servername>/Thingworx/Runtime/iframe-index.html?mashup=<Name des Haupt-Mashups>
* 
Wenn Sie einige Parameter an ein geöffnetes Mashup übergeben müssen, können Sie sie der URL hinzufügen.
* 
Die POST-Methode ist nicht zulässig. Sie müssen die GET-Methode verwenden.
Wenn Sie einen benutzerdefinierten Eintrittspunkt anstelle des Mashups verwenden möchten, müssen Sie ihn als URL-Parameter __entry_point__ hinzufügen. Beispielsweise https://<Thingworx Servername>/Thingworx/Runtime/iframe-index.html?__entry_point__=/Thingworx/Common/extensions/My-extension/ui/My-entry-point.html
* 
Falls Sie zwischen dem SSO-Modus und dem Nicht-SSO-Modus wechseln, gilt diese Änderung auch für den Nicht-SSO-Modus.
Wenn iFrame aktiviert ist, erhält der Benutzer eine Aufforderung zur SSO-Anmeldung im Popup-Fenster. Das Fenster wird nach einer erfolgreichen Anmeldung geschlossen, und das Mashup wird in das iFrame geladen.
Während des Anmeldevorgangs wird der Benutzer je nach Browser eventuell aufgefordert, die Verwendung von Cookies und/oder Popups zuzulassen. Weitere Details finden Sie in den Abbildungen unten:
* 
Wenn die primären und iFrame-Anwendungen zu verschiedenen Sites gehören, erlaubt der Chrome-Browser keinen Zugriff auf die Cookies für die iFrame-Anwendung. Beispiel: *.ptc.com und *.google.com. Die Lösung besteht im Hinzufügen der Cookie-Eigenschaft SameSite=None für die iFrame-Anwendung (Thingworx). Weitere Informationen finden Sie unter https://www.ptc.com/de/support/article/CS318637.
War dies hilfreich?