安裝與升級 > 安裝 ThingWorx > ThingWorx 組態資源 > 配置 ESAPI 驗證器設定
配置 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 會驗證參數和標題的長度 (透過 HTTPRequestHeaderMaxLengthHTTPRequestParameterMaxLength)。每個值預設為 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」文件會提供詳細的升級指示。
這是否有幫助?