配置 ESAPI 驗證器設定
透過增強的安全性應用程式設計介面 (ESAPI) 執行的 HTTP 請求標題/參數驗證,可使用 validation.properties 檔案進行配置。validation.properties 檔案會在 ThingWorx 啟動時建立且位於下列位置:/ThingworxStorage/esapi。您可以配置 regex 模式來新增標題/內容或修改現有的值。
配置新標題
欲配置新標題,請將以下內容新增至 validation.properties 檔案。標題名稱不區分大小寫。
"Validator.HTTPHeaderValue_{new-header-name}={regex}"
配置新參數
欲配置新參數,請將以下內容新增至 validation.properties 檔案:參數名稱區分大小寫。
Validator.HTTPParameterValue_{new-parameter-name}={regex}"
預設行為
• ThingWorx 會針對每個標題和參數使用如 validation.properties 檔案中所定義的 regex 來進行模式匹配。
• 如果 HTTP 請求有包含未定義在 validation.properties 檔案中的標題,ThingWorx 會使用針對 Validator.HTTPHeaderValue 定義的 regex 模式來進行模式匹配。
• 如果 HTTP 請求有包含未定義在 validation.properties 檔案中的參數,ThingWorx 會使用針對 Validator.HTTPParameterValue 定義的 regex 模式來進行模式匹配。
• 如果有某個值不符合其對應的 regex 模式,ThingWorx 會將 HTTP 請求中每個標題和參數的值清空。
• ESAPI 會驗證參數和標題的長度 (透過 HTTPRequestHeaderMaxLength 和 HTTPRequestParameterMaxLength)。每個值預設為 2000 個字元,不過可在 platform-settings.json 中修改。請參閱以下範例:
{
"PlatformSettingsConfig": {
"BasicSettings": {
"HTTPRequestHeaderMaxLength": 2000,
"HTTPRequestParameterMaxLength": 2000
}
},
"PersistenceProviderPackageConfigs": {
"PostgresPersistenceProviderPackage": {
"ConnectionInformation": {
"jdbcUrl": "jdbc:postgresql://localhost:5432/thingworx",
"password": "password",
"username": "twadmin"
}
}
}
}
• ESAPI 在針對已配置的常規運算式驗證一個值之後,還會執行下列驗證:
1. 檢查該值裡是否有多個編碼權杖 (例如,百分比符號和 cookie),並在找到多個編碼權杖時擲出一個錯誤。您可以經由將 Encoder.AllowMultipleEncoding=true 新增至 validation.properties 檔案的頂端來禁用這項功能。
2. 若有多個編碼權杖且允許多個編碼,則還會有一個檢查來確保多個編碼不是屬於混合類型。您可以經由將 Encoder.AllowMixedEncoding=true 新增至 validation.properties 檔案的頂端來禁用這項功能。
從 ThingWorx 6.0 及更高版本進行升級前的必要動作
如果要從版本 6.0 或更高版本進行升級,則必須在升級前先從 /ThingworxStorage/esapi 中移除現有的 validation.properties 檔案。如果不移除該檔案,那麼帶有這些額外參數的更新檔案在升級期間將不會覆寫目前版本。
位於
參考文件網站上的「安裝 ThingWorx」文件會提供詳細的升級指示。