安装和配置 > ThingWorx 配置资源 > 配置 ESAPI 验证器设置
配置 ESAPI 验证器设置
通过增强的安全应用程序编程界面 (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}"
默认行为
ThingWorx 将在 validation.properties 文件中定义的正则表达式用于每个标题和参数以进行模式匹配。
如果 HTTP 请求包含未在 validation.properties 文件中定义的标题,则 ThingWorx 将使用为 Validator.HTTPHeaderValue 定义的正则表达式模式以进行模式匹配。
如果 HTTP 请求包含未在 validation.properties 文件中定义的参数,则 ThingWorx 将使用为 Validator.HTTPParameterValue 定义的正则表达式模式以进行模式匹配。
如果一个值与其对应的正则表达式模式不匹配,则 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”文档。