配置 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 会验证参数和标题的长度 (通过 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”文档。