Configuración de las opciones del validador ESAPI
La validación de la cabecera/parámetros de la solicitud HTTP a través de la interfaz de programación de aplicaciones de seguridad mejoradas (ESAPI) se puede configurar mediante el fichero validation.properties. El fichero validation.properties se crea en el inicio de ThingWorx y se encuentra en la siguiente ubicación: /ThingWorxStorage/esapi. Se puede configurar el patrón regex para añadir cabeceras/propiedades o para modificar los valores existentes.
Configuración de una nueva cabecera
Para configurar una nueva cabecera, añada lo siguiente al fichero validation.properties. El nombre de la cabecera no distingue entre mayúsculas y minúsculas.
"Validator.HTTPHeaderValue_{new-header-name}={regex}"
Configuración de un nuevo parámetro
Para configurar un nuevo parámetro, añada lo siguiente al fichero validation.properties: El nombre de parámetro distingue entre mayúsculas y minúsculas.
Validator.HTTPParameterValue_{new-parameter-name}={regex}"
Funcionamientos por defecto
ThingWorx utiliza regex tal como se define en el fichero validation.properties para cada cabecera y parámetro de la coincidencia de patrones.
Si en una solicitud HTTP se incluye una cabecera que no se ha definido en el fichero validation.properties, ThingWorx utilizará el patrón regex definido para Validator.HTTPHeaderValue para la coincidencia de patrones.
Si en una solicitud HTTP se incluye un parámetro que no se ha definido en el fichero validation.properties, ThingWorx utilizará el patrón regex definido para Validator.HTTPParameterValue para la coincidencia de patrones.
ThingWorx vaciará el valor de las cabeceras y parámetros en la solicitud HTTP si un valor no coincide con el patrón regex correspondiente.
ESAPI valida la longitud de los parámetros y las cabeceras (a través de HTTPRequestHeaderMaxLength y HTTPRequestParameterMaxLength). El valor por defecto para cada uno es de 2000 caracteres, pero se puede modificar en platform-settings.json. Consulte el siguiente ejemplo:
{
"PlatformSettingsConfig": {
"BasicSettings": {
"HTTPRequestHeaderMaxLength": 2000,
"HTTPRequestParameterMaxLength": 2000
}
},
"PersistenceProviderPackageConfigs": {
"PostgresPersistenceProviderPackage": {
"ConnectionInformation": {
"jdbcUrl": "jdbc:postgresql://localhost:5432/thingworx",
"password": "password",
"username": "twadmin"
}
}
}
}
Después de validar un valor en una expresión regular configurada, ESAPI también realiza las siguientes validaciones:
1. Permite verificar si aparecen varios tokens codificados (por ejemplo, signos de porcentaje y cookies) en el valor y se emite un error si se encuentra más de un token codificado. Esto se puede desactivar añadiendo Encoder.AllowMultipleEncoding=true en la parte superior del fichero validation.properties.
2. Si hay varios tokens codificados y se permiten varias codificaciones, se verifica también que estas codificaciones no sean de tipos mixtos. Esto se puede desactivar añadiendo Encoder.AllowMixedEncoding=true en la parte superior del fichero validation.properties.
Acción necesaria antes de actualizar desde ThingWorx 6.0 y versiones superiores
Si se actualiza desde la versión 6.0 o superior, se debe quitar el fichero validation.properties existente de /ThingworxStorage/esapi antes de realizar la actualización. Si no se quita el fichero, el fichero actualizado con estos parámetros adicionales no sobrescribirá la versión actual durante actualización.
Las instrucciones detalladas sobre la actualización están disponibles en el documento de instalación de ThingWorx que se encuentra en el sitio de documentos de referencia.
¿Fue esto útil?