內容安全性原則
為了提升 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:SAMEORIGIN、DENY 與 ALLOWLIST。
• 如果將 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-ancestors 與 frame-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>