Definición del modelo de ThingWorx en Composer > Seguridad > Uso permitido de mashups integrados en iFrames
Uso permitido de mashups integrados en iFrames
Los secuestros de pulsación (clickjacking) son cuando un atacante utiliza un marco para mostrar un sitio y aplica una o varias capas invisibles sobre el sitio, engañando al usuario para que pulse en algo de la capa invisible. Una defensa contra los secuestros de pulsación es utilizar cabeceras de respuesta del servidor que indican al explorador si es correcto enmarcar la página. Debido a las diferencias de conformidad de los exploradores, se deben utilizar dos cabeceras distintas para indicar los dominios que tienen permitidos los marcos. Estas cabeceras se describen a continuación. ThingWorx utiliza estas cabeceras, que permiten al administrador rechazar todos los marcos y solo permitir el marco desde su propio origen o permitir el marco desde un dominio específico.
Descripciones de cabecera
Las cabeceras que se utilizan para combatir el secuestro de pulsaciones son las siguientes:
X-Frame-Options
DENY: la página no se puede mostrar en un marco, independientemente del sitio en el que se intenta mostrar.
SAMEORIGIN: la página se puede mostrar solo en un marco en el mismo origen que la página.
ALLOW-FROM http://example.com: la página se puede mostrar solo en un marco del origen especificado.
Para obtener una lista de exploradores que soportan X-Frame-Options, consulte https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Limitations.
Content-Security-Policy
frame-ancestors 'none': permite impedir la carga de recursos en un marco desde cualquier origen.
frame-ancestors 'self': permite la carga de recursos en un marco, pero solo desde el mismo origen.
frame-ancestors domain1.com domain2.com: permite la carga de recursos en un marco, pero solo desde los dominios de la lista dada.
Para obtener una lista de los exploradores que soportan el nivel 2 de la directiva de seguridad de contenido, consulte http://caniuse.com/#feat=contentsecuritypolicy2.
Configuración de ThingWorx
ThingWorx soporta ambas cabeceras mediante el uso de un filtro de solicitud HTTP. El administrador puede activar o desactivar uno de tres filtros: ClickjackFilterDeny, ClickjackFilterSameOrigin y ClickjackFilterWhiteList mediante la anulación de comentarios de una de las tres asignaciones de filtro en el fichero web.xml de la aplicación de ThingWorx.
Por ejemplo:
<!-- 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>
No es necesaria ninguna otra configuración para ClickjackFilterDeny o ClickjackFilterSameOrigin. Si el administrador decide utilizar ClickjackFilterWhiteList, se deben añadir los dominios aceptados en el valor del parámetro "domains" del filtro.
Por ejemplo:
<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>
Los dominios dados deben estar en el formato mostrado, una lista separada por espacios en la que se incluye el esquema (HTTP). La lista de dominios mostrada anteriormente funcionará con todos los exploradores.