高级自定义 > 业务逻辑自定义 > ThingWorx > 将 ThingWorx 混搭添加到 Windchill > ThingWorx 点击劫持支持
  
ThingWorx 点击劫持支持
点击劫持是指攻击者使用框架来显示站点并在站点上应用一或多个不可见层,从而在视觉上欺骗用户,使得用户误以为单击某一选项,而实际上是在单击不可见层中的其他选项。点击劫持防御将利用来自服务器的响应标题实现,服务器将通知浏览器为页面设置框架是否可行。由于浏览器中存在合规性差异,因此必须使用两个不同的标题来指示允许设置框架的域。有关这两个标题 (X-Frame-OptionsContent-Security-Policy) 的介绍如下所示。ThingWorx 可利用这两个标题使得管理员能够进行以下配置:禁止所有框架,仅允许使用来自其源或特定域的框架。
标题说明
用于点击劫持防御的两个标题是 X-Frame-OptionsContent-Security-Policy
包含 frame-ancestors 的内容安全策略级别 2 可受到所有浏览器当前版本的支持,但是 Internet Explorer、Edge、Opera Mini 以外,而 Firefox 52 仅部分支持。可在以下位置找到完整列表:http://caniuse.com/#feat=contentsecuritypolicy2。Internet Explorer 8 及以上版本和 Firefox 18 及以上版本均支持 X-Frame-Options Allow-From 标题,但 Chrome、Safari 和 Opera 不支持。可在以下位置找到支持的浏览器列表:https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Limitations
X 框架选项
DENY - 无论站点是否尝试此操作,页面都不会显示在框架中。
SAMEORIGIN - 页面仅可在源与页面本身相同的框架中显示。
ALLOW-FROM http://example.com - 页面仅可在指定源的框架中显示。
内容安全策略
frame-ancestors ‘none’ - 阻止从来自任何源的框架中加载资源。
frame-ancestors ‘self’ - 允许在框架中加载资源,但只能从来自相同源的框架加载。
frame-ancestors domain1.com domain2.com - 允许在框架中加载资源,但只能从给定列表中的域加载。
ThingWorxSupport
配置
ThingWorx 将通过使用 Http 请求筛选器来支持两个标题。管理员可以启用或禁用以下三个筛选器之一:ClickjackFilterDenyClickjackFilterSameOriginClickjackFilterWhiteList,方法是取消对 ThingWorx 应用程序 web.xml 文件中的三个筛选器映射之一的注释。
例如:
<!-- 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)。
* 
Allow-From 标题有以下限制。它将仅允许一个单独的域。