ESAPI バリデータの設定
Enhanced Security Application Programming インタフェース (ESAPI) 経由の HTTP リクエストヘッダー/パラメータの検証の設定には、validation.properties ファイルを使用できます。Validation.properties ファイルは ThingWorx の起動時に作成され、次の場所にある /ThingworxStorage/esapi に配置されています。ヘッダー/プロパティを追加するか、既存の値を修正する正規表現パターンを設定できます。
新しいヘッダーの設定
新しいヘッダーを設定するには、validation.properties ファイルに、次の記述を追加します。ヘッダー名では、大文字と小文字は区別されません。
"Validator.HTTPHeaderValue_{new-header-name}={regex}"
新しいパラメータの設定
新しいパラメータを設定するには、validation.properties ファイルに、次の記述を追加します。パラメータ名では、大文字と小文字が区別されます。
Validator.HTTPParameterValue_{new-parameter-name}={regex}"
デフォルトの動作
各ヘッダーおよびパターンマッチングのパラメータでは、validation.properties ファイルで定義されている正規表現が使用されます。
HTTP リクエストに validation.properties ファイルで定義されていないヘッダーが含まれている場合、ThingWorx では Validator.HTTPHeaderValue に定義されている正規表現パターンを使用してパターンマッチングが行われます。
HTTP リクエストに validation.properties ファイルで定義されていないパラメータが含まれている場合、ThingWorx では Validator.HTTPParameterValue に定義されている正規表現パターンを使用してパターンマッチングが行われます。
値が対応する正規表現パターンと一致しない場合、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) がないかどうかがチェックされ、2 つ以上のエンコードされたトークンが見つかった場合はエラーが発生します。これは、Encoder.AllowMultipleEncoding=truevalidation.properties ファイルの先頭に追加することで無効にできます。
2. 複数のエンコードされたトークンがあり、複数のエンコーディングが許可されている場合、複数のエンコーディングのタイプが混在していないかどうかもチェックされます。これは、Encoder.AllowMixedEncoding=truevalidation.properties ファイルの先頭に追加することで無効にできます。
ThingWorx 6.0 以降からアップグレードする前に必要な操作
バージョン 6.0 以降からアップグレードする場合、アップグレードする前に、/ThingworxStorage/esapi から既存の validation.properties ファイルを除去する必要があります。ファイルを除去しないと、アップグレード時に、追加パラメータを指定して更新されたファイルによって現在のバージョンが上書きされません。
詳細なアップグレード手順については、 参照ドキュメントサイトの Installing ThingWorx ドキュメントを参照してください。