內容安全性原則
為了提升 ThingWorx 客戶的安全性,從 ThingWorx 9.3.15、9.4.5 與 9.5.1 開始,我們為 ThingWorx Platform 新增了「內容安全性原則」(CSP)。
CSP
CSP 是 Web 瀏覽器用來協助防止跨網站指令集 (XSS)、點擊劫持及其他資料插入攻擊的關鍵安全性工具。CSP 的運作方式是將 CSP 標題從 ThingWorx Platform 插入 Web 瀏覽器,以控制瀏覽器可以載入哪些動態資料與資源以及從哪些網域載入。來自允許網域外部的資源請求無法載入至瀏覽器。
受控制資源的範例包括:
載入字型、圖像及 JavaScript 程式庫
轉譯 ThingWorx 混搭上 iFrame 中外部來源的內容
轉譯外部頁面上 iFrame 中的 ThingWorx 頁面內容,例如轉譯 Windchill 頁面中的 ThingWorx 混搭
管理員可透過 ThingWorx Composer 配置 CSP 指令。CSP 標題是所有指令的組合,並構成了 CSP 原則。CSP 標題限制為 1200 個字元。
ThingWorx 已實行「內容安全性原則層級 2」。如需有關 CSP 的詳細資訊,請參閱以下內容:
Composer
主頁橫幅
為了提醒管理員這一新安全性功能,並警告他們尚未啟用此功能,ThingWorx Composer 會在 Composer 最上方顯示非封鎖警告橫幅「未啟用內容安全性原則 (CSP)。如需詳細資訊,請造訪說明中心。」
只有在未啟用 CSP 時,才會顯示此橫幅,而且只會針對管理員顯示。管理員可以為他們自己解除警告,以使警告在未來登入時不會顯示。其他管理員將仍會收到橫幅,直到他們解除為止。橫幅包括「內容安全性原則」主題的說明中心連結。
配置 CSP
管理員將可透過「平台子系統」中的「內容安全性原則規則」子頁面配置 CSP。在此頁面上,管理員可以新增及修改定義原則的指令。如需詳細資訊,請參閱配置內容安全性原則標題值
啟用 CSP
透過在 platform-settings.json 中設定新參數,可以啟用 CSP:“EnableContentSecurityPolicyFilter”: true
如果將 "EnableContentSecurityPolicyFilter" 設定為 true,會啟用 CSP 保護。如果將 "EnableContentSecurityPolicyFilter" 設定為 false 或其未包括在 platform-settings.json 中,則會禁用 CSP。
您可在說明中心的安裝與升級部份找到有關安裝與升級的指示。
包含 CSP 篩選器的新 ThingWorx Platform 安裝
手動安裝
ThingWorx Foundation 安裝程式
將 ThingWorx 升級為支援 CSP 的版本
如需維護版升級,請參閱維護版升級
如需 Windows 手動升級,請參閱下列內容:
如需 Linux 手動升級,請參閱下列內容:
如需 ThingWorx Foundation 安裝程式升級,請參閱安裝程式升級
在現有環境中啟用或禁用 CSP
欲在現有環境中啟用或禁用 CSP,請執行下列步驟:
1. platform-settings.json 之 PlatformSettingsConfig 下的 BasicSettings 區段中將 EnableContentSecurityPolicyFilter 旗標設定為 true
2. 重新啟動 Tomcat 伺服器。
* 
在 ThingWorx 啟動時,如果符合下列所有條件,web.xml 中的 ClickjackFilter 組態會自動移轉至 CSP:
CSP 篩選器已開啟。
已在 web.xml 中配置點擊劫持篩選器。
在 ThingWorx Composer 中,ThingWorx 管理員尚未配置 CSP 篩選器。
將 ClickjackFilter 設定移轉至 CSP
在 ThingWorx 啟動時,如果符合下列條件,ClickjackFilter 組態會自動移轉至 CSP:
「內容安全性原則篩選器」已開啟,也就是說 EnableContentSecurityPolicyFilter 設定為 true
已使用 web.xml 配置「點擊劫持篩選器」。
尚未從 UI 配置 CSP 篩選器。
可透過下列三種模式之一配置 ClickjackFilter:SAMEORIGINDENYALLOWLIST
如果將 ClickjackFilter 配置為 SAMEORIGIN,將不會移轉任何項目,因為那是 frame-ancestors 的 CSP 預設組態。
<filter>
<filter-name>ClickjackFilterSameOrigin</filter-name>
<filter-class>com.thingworx.security.filter.ClickjackFilter</filter-class>
<init-param>
<param-name>mode</param-name>
<param-value>SAMEORIGIN</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>ClickjackFilterSameOrigin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
如果將 ClickjackFilter 配置為 DENY,則會將 CSP 標題 frame-ancestors 配置為 'none'
<filter>
<filter-name>ClickjackFilterDeny</filter-name>
<filter-class>com.thingworx.security.filter.ClickjackFilter</filter-class>
<init-param>
<param-name>mode</param-name>
<param-value>DENY</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ClickjackFilterDeny</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
如果將 ClickjackFilter 配置為 ALLOWLIST、則會將 CSP 標題 frame-ancestorsframe-src 配置為允許已配置的網域。
<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://example.com</param-value>
</init-param>
</filter>
<filter>
<filter-mapping>
<filter-name>ClickjackFilterAllowList</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
這是否有幫助?