Installation et configuration > Ressources de configuration de ThingWorx > Configuration des paramètres du validateur ESAPI
Configuration des paramètres du validateur ESAPI
La validation des en-têtes/paramètres des requêtes HTTP via ESAPI (Enhanced Security Application Programming Interface) est configurable dans le fichier validation.properties. Le fichier validation.properties est créé lors du démarrage de ThingWorx et est stocké à l'emplacement suivant : /ThingworxStorage/esapi. Vous pouvez configurer le modèle d'expression régulière pour ajouter des en-têtes/propriétés ou pour modifier des valeurs existantes.
Configuration d'un nouvel en-tête
Pour configurer un nouvel en-tête, ajoutez la ligne suivante dans le fichier validation.properties : Le nom de l'en-tête n'est pas sensible à la casse.
"Validator.HTTPHeaderValue_{new-header-name}={regex}"
Configuration d'un nouveau paramètre
Pour configurer un nouveau paramètre, ajoutez la ligne suivante dans le fichier validation.properties : Le nom du paramètre est sensible à la casse.
Validator.HTTPParameterValue_{new-parameter-name}={regex}"
Comportements par défaut
ThingWorx utilise l'expression régulière telle que définie dans le fichier validation.properties pour chaque en-tête et paramètre pour la comparaison au modèle.
Si la requête HTTP contient un en-tête qui n'est pas défini dans le fichier validation.properties, ThingWorx utilisera le modèle d'expression régulière défini pour Validator.HTTPHeaderValue pour la comparaison.
Si la requête HTTP contient un paramètre qui n'est pas défini dans le fichier validation.properties, ThingWorx utilisera le modèle d'expression régulière défini pour Validator.HTTPParameterValue pour la comparaison.
ThingWorx effacera la valeur de chaque en-tête et paramètre de la requête HTTP si une valeur ne correspond pas à son modèle d'expression régulière applicable.
ESAPI valide la longueur des paramètres et des en-têtes (via HTTPRequestHeaderMaxLength et HTTPRequestParameterMaxLength). La valeur par défaut dans les deux cas est de 2 000 caractères, mais elle peut être modifiée dans platform-settings.json. Consultez l'exemple ci-dessous :
{
"PlatformSettingsConfig": {
"BasicSettings": {
"HTTPRequestHeaderMaxLength": 2000,
"HTTPRequestParameterMaxLength": 2000
}
},
"PersistenceProviderPackageConfigs": {
"PostgresPersistenceProviderPackage": {
"ConnectionInformation": {
"jdbcUrl": "jdbc:postgresql://localhost:5432/thingworx",
"password": "password",
"username": "twadmin"
}
}
}
}
Au-delà de la validation d'une valeur par rapport à une expression régulière configurée, ESAPI procède également aux validations suivantes :
1. vérifie l'absence de plusieurs jetons codés (signes de pourcentage et cookies, par exemple) dans la valeur et renvoie une erreur si plus d'un seul jeton codé est trouvé. Vous pouvez désactiver cette vérification en ajoutant Encoder.AllowMultipleEncoding=true au début du fichier validation.properties ;
2. si plusieurs jetons codés sont trouvés et que plusieurs codages sont autorisés, une vérification est également effectuée pour s'assurer que les codages multiples ne sont pas de types mixtes. Vous pouvez désactiver cette vérification en ajoutant Encoder.AllowMixedEncoding=true au début du fichier validation.properties.
Action requise avant une mise à niveau depuis ThingWorx 6.0 ou version ultérieure
Avant toute mise à niveau depuis la version 6.0 ou ultérieure, vous devez veiller à supprimer le fichier validation.properties existant du répertoire /ThingworxStorage/esapi avant la mise à niveau. Si vous ne supprimez pas ce fichier, le fichier mis à jour avec ces paramètres supplémentaires ne remplacera pas la version existante lors de la mise à niveau.
Des instructions détaillées pour les mises à niveau sont disponibles dans la documentation d'installation de ThingWorx, accessible sur le site des documents de référence.