Configurazione delle impostazioni della convalida ESAPI
La convalida dell'intestazione/parametro della richiesta HTTP tramite l'interfaccia Enhanced Security Application Programming Interface (ESAPI) è configurabile mediante il file validation.properties. Il file validation.properties viene creato all'avvio di ThingWorx e si trova nella seguente posizione: /ThingworxStorage/esapi. È possibile configurare l'espressione regex per aggiungere intestazioni/proprietà o modificare i valori esistenti.
Configurazione di una nuova intestazione
Per configurare una nuova intestazione, aggiungere quanto segue al file validation.properties. Per il nome dell'intestazione non viene fatta distinzione tra maiuscole e minuscole.
"Validator.HTTPHeaderValue_{new-header-name}={regex}"
Configurazione di un nuovo parametro
Per configurare un nuovo parametro, aggiungere al file validation.properties quanto segue: Il campo del nome del parametro effettua la distinzione tra maiuscole e minuscole.
Validator.HTTPParameterValue_{new-parameter-name}={regex}"
Comportamenti di default
• ThingWorx utilizza il regex come definito nel file validation.properties per ogni intestazione e parametro per la corrispondenza dell'espressione.
• Se una richiesta HTTP contiene un'intestazione non definita nel file validation.properties, ThingWorx utilizza l'espressione regex definita per Validator.HTTPHeaderValue per la corrispondenza dell'espressione.
• Se una richiesta HTTP contiene un parametro non definito nel file validation.properties, ThingWorx utilizza l'espressione regex definita per Validator.HTTPParameterValue per la corrispondenza dell'espressione.
• ThingWorx elimina il valore di ogni intestazione e parametro nella richiesta HTTP se un valore non corrisponde alla rispettiva espressione regex.
• ESAPI convalida la lunghezza dei parametri e delle intestazioni tramite HTTPRequestHeaderMaxLength e HTTPRequestParameterMaxLength. Il valore di default per ciascuna impostazione è 2000 caratteri, ma può essere modificato nel file platform-settings.json. Vedere l'esempio riportato di seguito:
{
"PlatformSettingsConfig": {
"BasicSettings": {
"HTTPRequestHeaderMaxLength": 2000,
"HTTPRequestParameterMaxLength": 2000
}
},
"PersistenceProviderPackageConfigs": {
"PostgresPersistenceProviderPackage": {
"ConnectionInformation": {
"jdbcUrl": "jdbc:postgresql://localhost:5432/thingworx",
"password": "password",
"username": "twadmin"
}
}
}
}
• Dopo aver convalidato un valore rispetto a un'espressione regolare configurata, ESAPI esegue inoltre le convalide riportate di seguito.
1. Controlli per più token codificati (ad esempio segni percentuali e cookie) nel valore; se viene individuato più di un token codificato, viene generato un errore. Questa impostazione può essere disattivata aggiungendo Encoder.AllowMultipleEncoding=true all'inizio del file validation.properties.
2. Se sono presenti più token codificati e sono consentite più codifiche, è disponibile inoltre un controllo per verificare che più codifiche non siano di tipo misto. Questa impostazione può essere disattivata aggiungendo Encoder.AllowMixedEncoding=true all'inizio del file validation.properties.
Azione necessaria prima dell'aggiornamento da ThingWorx 6.0 e versioni successive
Se si esegue l'aggiornamento dalla versione 6.0 o successive, prima di effettuare tale operazione è necessario rimuovere il file validation.properties esistente da /ThingworxStorage/esapi. Se non si rimuove il file, il file aggiornato con questi parametri aggiuntivi non sovrascrive la versione corrente durante l'aggiornamento.