Composer 中的 ThingWorx 模型定义 > 安全 > 允许在 iFrame 中嵌入的混搭
允许在 iFrame 中嵌入的混搭
“点击劫持”是指攻击者使用框架显示站点并在站点上应用一个或多个不可见的图层,并欺骗用户单击不可见图层中的某些内容。要防御点击劫持,可以使用服务器响应标题分辨浏览器是否可以对页面使用框架。由于浏览器的合规性差异,必须使用两个不同的响应标题来指示允许使用框架的域。下面将介绍这些标题。ThingWorx 使用这些标题,管理员即可不允许所有的框架使用,仅允许从其源或特定域使用框架。
标题说明
用于防御点击劫持的标题如下所示:
X 框架选项
DENY - 无论站点是否尝试显示该页面,该页面都不能显示在框架中。
SAMEORIGIN - 该页面仅能显示在与页面同源的框架中。
ALLOW-FROM http://example.com - 该页面仅能显示在指定源的框架中。
有关支持 X 框架选项的浏览器列表,请参阅 https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Limitations
内容安全策略
frame-ancestors ‘none’ - 可防止从任何源的框架中加载资源。
frame-ancestors ‘self’ - 允许在框架中加载资源,但仅限同源。
frame-ancestors domain1.com domain2.com - 允许在框架中加载资源,但仅限给定列表中的域。
有关支持内容安全策略级别 2 的浏览器列表,请参阅 http://caniuse.com/#feat=contentsecuritypolicy2
ThingWorx 配置
ThingWorx 通过使用 HTTP 请求筛选器支持两个标题。管理员可以通过取消 ThingWorx 应用程序的 web.xml 文件中三个筛选器映射之一的备注来启用或禁用以下三个筛选器之一:ClickjackFilterDenyClickjackFilterSameOriginClickjackFilterWhiteList
例如:
<!-- 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>
对于 ClickjackFilterDenyClickjackFilterSameOrigin,不需要其他配置。如果管理员选择使用 ClickjackFilterWhiteList,则必须在筛选器 "domains" 参数值中添加接受的域。
例如:
<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>
给定的域必须采用所示的格式:一个以空格分隔的列表,其中包括方案 (HTTP)。以上所示的域列表将适用于所有浏览器。