Composer 中的 ThingWorx 模型定義 > 安全性 > 允許在 iFrames 中有內嵌混搭
允許在 iFrames 中有內嵌混搭
點擊劫持是指攻擊者使用一個框架來顯示某個網站並在網站上套用不可見的一或多個層,拐騙使用者去點擊不可見層中的某個項目。針對點擊劫持所採取的一個防禦方法是使用來自伺服器的回應式標題,來告知瀏覽器是否可以用框架顯示頁面。由於瀏覽器之間的合規性差異,因此必須使用兩個不同的標題來指示允許使用框架的網域。這些標題的說明如下。ThingWorx 會使用這些標題,讓管理員能夠禁止所有框架、僅允許來自其本身源頭的框架,或是允許來自特定網域的框架。
標題描述
用來對抗點擊劫持的標題如下:
X-Frame-Options
DENY - 無論嘗試顯示頁面的網站為何,都不能在框架中顯示頁面。
SAMEORIGIN - 只能在與頁面相同源頭的框架中顯示頁面。
ALLOW-FROM http://example.com - 只能在位於指定源頭的框架中顯示頁面。
如需支援 X-Frame-Options 的瀏覽器清單,請參閱 https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet#Limitations
Content-Security-Policy
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) 的一份以空格分隔的清單。如上所示的網域清單將可與所有瀏覽器搭配運作。