POST 및 URL 매개변수 API
POST 및 URL 매개변수는 request.postParams 및 request.urlParams를 사용하여 요청 객체의 속성으로 액세스할 수 있습니다.
request.postParams.myParam을 호출하여 postParams 및 urlParams 상위 객체의 속성으로 단일 매개변수에 액세스할 수 있습니다. 이러한 방식으로 액세스되는 모든 매개 변수는 기본 클래스 ParameterValue의 개체입니다. 이 클래스의 모든 API는 모든 매개 변수에서 호출할 수 있습니다.
클라이언트 요청을 검사한 후 요청 개체에서 매개 변수 값에 액세스하고 암호화해야 할 수 있습니다. 클라이언트 요청의 데이터에 따라 값을 암호화하고 여러 가지 방법으로 인스턴스의 필드에 매핑할 수 있습니다.
알려진 테이블 및 필드의 값 암호화
암호화된 데이터를 저장할 인스턴스 테이블 및 필드의 이름을 알고 있는 경우 암호화 규칙에서 명시적으로 정의할 수 있습니다. 예를 들어 인시던트 생성 요청이 인스턴스에서 처리될 것임을 알고 있을 수 있으며 설명 필드의 텍스트 매개변수를 암호화하려고 할 수 있습니다. 이 경우 다음 작업을 만들 수 있습니다.
function SampleAction1() {
request.postParams.text.valueFor('incident', 'description');
}동적으로 정의된 테이블 및 필드의 값 암호화
반대로, 암호화된 데이터가 채울 필드의 이름을 모르는 경우 tableName 및 fieldName을 사용하여 동적으로 정의할 수 있습니다.
아래 예시는 인스턴스의 다양한 작업 테이블(예: 인시던트, 문제, change_request)에 데이터를 저장할 수 있는 일반 요청을 처리합니다.
function SampleAction2() {
var tableName = request.urlParams.table;
for (var parameter in request.postParams) {
var currentParam = request.postParams[parameter];
var fieldName = currentParam.toString();
if (fieldName == 'text') {
currentParam.valueFor(tableName, 'description')
} else {
currentParam.valueFor(tableName, fieldName);
}
}
}이 작업:
- URL 매개변수에서 대상 테이블을 가져옵니다.
- URL 매개변수를 반복합니다.
- 암호화하도록 표시된 필드와 일치하는 이름으로 URL 매개변수를 암호화하도록 프록시 서버에 요청합니다 에지 암호화 규칙 .
- text라는 특정 매개변수를 찾아 프록시에 인시던트 테이블의 설명 필드에 대한 암호화 구성을 기반으로 값을 암호화하도록 요청합니다에지 암호화 규칙.
이 예제에서 valueFor() 메서드는 실제로 암호화를 수행하지 않습니다. 대신, 이 메서드는 프록시 서버에 요청 개체의 테이블/필드 쌍이 암호화 구성을 사용하여 암호화하도록 표시되어 있는지 확인하고 해당하는 경우 암호화하도록 요청합니다 에지 암호화 규칙 .
매개변수 내에서 JSON 또는 XML 암호화
POST 또는 URL 매개 변수에는 JSON 또는 XML 콘텐츠가 포함될 수 있습니다. 이 경우 매개 변수 내의 내용을 처리하고, 값을 반복하고, 필수 필드를 암호화할 수 있습니다. 이 예제에서 tableName 은 여전히 POST 매개 변수에서 액세스되지만 필드 값은 JSON 개체 데이터입니다.
function SampleAction3() {
var tableName = request.postParams.table;
var data = request.postParams.data;
var dataIterator = data.getAsJsonContent().iterator();
while (dataIterator.hasNext()) {
var jsonElement = dataIterator.next();
var fieldName = jsonElement.getName();
if (fieldName == 'text') {
jsonElement.valueFor(tableName, 'description');
} else {
jsonElement.valueFor(tableName, fieldName);
}
}
}POST 매개변수 내에서 XML을 처리하는 암호화 규칙 작업의 예입니다.
function SampleAction4() {
var tableName = request.postParams.table;
var data = request.postParams.data;
var dataIterator = data.getAsXmlContent().getIteratorOverAllChildren();
while (dataIterator.hasNext()) {
var jsonElement = dataIterator.next();
var fieldName = jsonElement.getName();
if (fieldName == 'text') {
jsonElement.valueFor(tableName, 'description');
} else {
jsonElement.valueFor(tableName, fieldName);
}
}
}쿼리 암호화
중요한 데이터를 포함하는 클라이언트 요청의 파라미터 내에서 인코딩된 쿼리가 발생할 수 있습니다. 쿼리의 필드를 인스턴스 데이터베이스의 암호화된 값과 일치시키려면 프록시에 쿼리의 필드가 암호화용으로 표시되어 있는지 확인하도록 요청하는 암호화 규칙을 생성해야 합니다. encodedQueryFor() 메서드는 지정된 테이블에서 인코딩된 쿼리를 구문 분석하고 쿼리의 필드에 암호화 구성이 있는지 확인합니다.
이 예에서 규칙은 필터 매개변수를 찾는 매개변수를 반복하며, 이 매개변수는 Glide 인코딩 쿼리로 예상됩니다.
function SampleAction5() {
var tableName = request.urlParams.table;
for (var parameter in request.postParams) {
var currentParam = request.postParams[parameter];
var fieldName = currentParam.toString();
if (fieldName == 'filter') {
currentParam.encodedQueryFor(tableName);
} else {
currentParam.valueFor(tableName, fieldName);
}
}
}예를 들어 필터 값이 short_description=My sensitive information^number=INC000056^category=Outage인 경우 쿼리는 인스턴스에서 short_description=<Encrypted(My sensitive information)>^number=INC000056^category=Outage 가 됩니다.
ParameterValue - toString()
POST 또는 URL 매개변수 값을 문자열로 변환합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| 문자열 | 매개변수 값(문자열)입니다. |
매개변수값 - getAsJsonContent()
요청을 JsonNode 유형의 반복 가능한 객체로 반환합니다.
이 메서드는 요청 본문이 유효한 JSON 페이로드인 경우에만 규칙에서 에지 암호화 규칙 사용할 수 있습니다. 요청 본문에 어떤 형식이 포함되어 있는지 잘 모르는 경우 요청 개체의 contentType 필드를 확인합니다.
요청이 JsonNode 객체로 반환되면 객체를 반복하고 필드를 암호화하는 데 사용할 JSON API 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| Json노드 | 반복 가능한 JsonNode로서의 요청. |
ParameterValue - getAsXmlContent()
요청 내용을 XMLContent 형식의 반복 가능한 객체로 반환합니다.
이 메서드는 규칙에서만 에지 암호화 규칙 사용할 수 있습니다. 이 메서드는 요청 본문이 유효한 XML 페이로드라고 가정합니다. contentType을 확인하여 확인할 수 있습니다.
요청이 XMLContent 객체로 반환되면, 객체를 반복하고 필드를 암호화하는 데 사용할 XML API 수 있습니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| 없음 |
| 유형 | 설명 |
|---|---|
| XMLContent | XMLContent 유형의 반복 가능한 객체로서의 요청. |
ParameterValue - encodedQueryFor(String tableName)
요소의 값이 지정된 테이블의 인코딩된 쿼리임을 지정합니다.
매개 변수에서 이 함수를 호출하면 매개 변수 값이 지정된 테이블에 대한 인코딩된 쿼리 문자열 임을 프록시에 알릴 수 있습니다. 프록시는 인코딩된 쿼리를 구문 분석하고 암호화해야 하는 인코딩된 쿼리의 필드를 암호화합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| tableName | 문자열 | 쿼리가 실행될 것으로 예상되는 테이블입니다. |
| 유형 | 설명 |
|---|---|
| void |
ParameterValue - valueFor(문자열 tableName, 문자열 fieldName)
요소 값이 지정된 테이블의 지정된 필드에 매핑되도록 지정합니다.
요소 값에 대해 이 메서드를 호출하면 이 요소의 값이 지정된 테이블의 지정된 필드에 매핑됨을 프록시에 알릴 수 있습니다. 그런 다음 프록시는 필드를 암호화해야 하는지 확인합니다.
| 이름 | 유형 | 설명 |
|---|---|---|
| tableName | 문자열 | 테이블 이름입니다. |
| fieldName | 문자열 | 필드 이름입니다. |
| 유형 | 설명 |
|---|---|
| void |