설치 및 구성 > ThingWorx 구성 리소스 > ESAPI 유효성 검사기 설정 구성
ESAPI 유효성 검사기 설정 구성
ESAPI(Enhanced Security Application Programming Interface)를 통한 HTTP 요청 머리글/매개 변수 유효성 검사는 validation.properties 파일을 통해 구성할 수 있습니다. validation.properties 파일은 ThingWorx 시작 시 생성되고 /ThingworxStorage/esapi 위치에 배치됩니다. 머리글/속성을 추가하거나 기존 값을 수정하도록 regex 패턴을 구성할 수 있습니다.
새 머리글 구성
새 머리글을 구성하려면 validation.properties 파일에 다음을 추가합니다. 머리글 이름은 대/소문자를 구분하지 않습니다.
"Validator.HTTPHeaderValue_{new-header-name}={regex}"
새 매개 변수 구성
새 매개 변수를 구성하려면 validation.properties 파일에 다음을 추가합니다. 매개 변수 이름은 대/소문자를 구분합니다.
Validator.HTTPParameterValue_{new-parameter-name}={regex}"
기본 동작
ThingWorx는 패턴 일치를 위해 각 머리글 및 매개 변수에 대해 validation.properties 파일에 정의된 대로 regex를 사용합니다.
HTTP 요청에 validation.properties 파일에 정의되지 않은 머리글이 포함되어 있는 경우 ThingWorx는 패턴 일치를 위해 Validator.HTTPHeaderValue에 정의된 regex 패턴을 사용합니다.
HTTP 요청에 validation.properties 파일에 정의되지 않은 매개 변수가 포함되어 있는 경우 ThingWorx는 패턴 일치를 위해 Validator.HTTPParameterValue에 정의된 regex 패턴을 사용합니다.
값이 해당 regex 패턴과 일치하지 않는 경우 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. 값에서 인코딩된 여러 토큰(예: 백분율 기호 및 쿠키)를 검사하고 인코딩된 토큰이 둘 이상 발견되면 오류가 throw됩니다. 이는 Encoder.AllowMultipleEncoding=truevalidation.properties 파일의 맨 위에 추가하여 비활성화할 수 있습니다.
2. 인코딩된 토큰이 여러 개 있고 인코딩이 여러 번 허용되는 경우 여러 인코딩이 혼합된 유형이 아닌지도 확인합니다. 이는 Encoder.AllowMixedEncoding=truevalidation.properties 파일의 맨 위에 추가하여 비활성화할 수 있습니다.
ThingWorx 6.0 이상에서 업그레이드하기 전에 필요한 작업
버전 6.0 이상에서 업그레이드하는 경우 업그레이드하기 전에 /ThingworxStorage/esapi에서 기존 validation.properties 파일을 제거해야 합니다. 파일을 제거하지 않는 경우 이러한 추가 매개 변수가 있는 업데이트된 파일이 업그레이드하는 동안 현재 버전을 덮어쓰지 않습니다.
자세한 업그레이드 지침은 Reference Documents site(참조 문서 사이트)에 있는 ThingWorx 설치 문서에 나와 있습니다.