APIs de parâmetro POST e URL
Os parâmetros POST e URL podem ser acessados como propriedades do objeto request usando request.postParams e request.urlParams.
Qualquer parâmetro único pode ser acessado como uma propriedade dos objetos primários postParams e urlParams chamando request.postParams.myParam. Qualquer parâmetro acessado dessa forma é um objeto da classe subjacente ParameterValue. Quaisquer APIs nessa classe podem ser chamadas em qualquer parâmetro.
Depois de fazer a Inspeção da solicitação do cliente, pode ser necessário acessar e criptografar os valores de parâmetro do objeto request. Dependendo dos dados na solicitação do cliente, você pode criptografar valores e mapeá-los para campos na instância de várias maneiras.
Como criptografar o valor de uma tabela e campo conhecidos
Se você souber o nome da tabela de instância e do campo que conterá os dados criptografados, poderá defini-los explicitamente na regra de criptografia. Por exemplo, você sabe que a solicitação será processada na instância para criar um incidente e deseja criptografar o parâmetro text no campo de descrição. Nesse caso, você pode criar a ação a seguir.
function SampleAction1() {
request.postParams.text.valueFor('incident', 'description');
}Como criptografar o valor de uma tabela e campo definidos dinamicamente
Por outro lado, se você não souber o nome do campo que os dados criptografados preencherão, poderá defini-los dinamicamente usando tableName e fieldName.
O exemplo abaixo processa uma solicitação genérica que pode armazenar dados em diferentes tabelas de tarefa (como incidente, problema e change_request) na instância.
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);
}
}
}Esta ação:
- Obtém a tabela de destino dos parâmetros de URL.
- Itera sobre os parâmetros de URL.
- Solicita ao servidor proxy Edge Encryption para criptografar qualquer parâmetro de URL com um nome que corresponda a um campo marcado para criptografia.
- Pesquisa um parâmetro específico chamado text e solicita que o proxy Edge Encryption criptografe o valor com base na configuração de Edge Encryption de descrição na tabela de incidentes.
Neste exemplo, o método valueFor() não está executando nenhuma criptografia. Em vez disso, o método solicita ao servidor proxy Edge Encryption para verificar se o par de tabela/campo no objeto "request" está marcado para criptografia com uma configuração de criptografia e, se aplicável, criptografá-lo.
Como criptografar JSON ou XML em um parâmetro
Um parâmetro POST ou URL pode incluir conteúdo JSON ou XML. Nesse caso, você pode processar o conteúdo do parâmetro, iterar os valores e criptografar os campos obrigatórios. Neste exemplo, o tableName ainda é acessado de um parâmetro POST, mas o valor do campo são os dadosdo objeto 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);
}
}
}Um exemplo de uma ação de regra de criptografia que processa XML em um parâmetro POST.
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);
}
}
}Como criptografar uma consulta
Você pode encontrar uma consulta codificada em um parâmetro na solicitação do cliente que contém dados confidenciais. Para corresponder um campo em uma consulta a um valor criptografado no banco de dados da instância, é preciso criar uma regra de criptografia que peça ao proxy para verificar se um campo na consulta está marcado para criptografia. O método encodedQueryFor() analisa uma consulta codificada em uma determinada tabela e verifica se algum campo na consulta tem configurações de criptografia.
Neste exemplo, a regra itera sobre os parâmetros procurando o parâmetro filter, que deve ser uma consulta codificada do 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);
}
}
}Por exemplo, se o valor do filter for short_description=My sensitive information^number=INC000056^category=Outage, a consulta se tornará short_description=<Encrypted(My sensitive information)>^number=INC000056^category=Outage na instância.
ParameterValue "toString()"
Converte o valor do parâmetro POST ou URL para uma cadeia de caracteres.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| Cadeia de caracteres | O valor do parâmetro como uma cadeia de caracteres. |
ParameterValue "getAsJsonContent()"
Retorna a solicitação como um objeto iterável do tipo JsonNode.
Este método está disponível somente em uma regra de Edge Encryption se o corpo da solicitação for uma carga JSON válida. Se você não tiver certeza de qual formato o corpo da solicitação inclui, verifique o campo "contentType" no objeto request.
Depois que a solicitação é retornada como um objeto JsonNode, você pode usar JSON APIs para iterar no objeto e criptografar os campos.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| JsonNode | A solicitação como um JsonNode iterável. |
ParameterValue "getAsXmlContent()"
Retorna o conteúdo da solicitação como um objeto iterável do tipo XMLContent.
Este método está disponível somente em uma regra Edge Encryption e assume que o corpo da solicitação é uma carga XML válida. Você pode verificar o "contentType" para se certificar.
Depois que a solicitação é retornada como um objeto XMLContent, você pode usar o XML APIs para iterar no objeto e criptografar os campos.
| Nome | Tipo | Descrição |
|---|---|---|
| Nenhum |
| Tipo | Descrição |
|---|---|
| XMLContent | A solicitação como um objeto iterável do tipo XMLContent. |
ParameterValue "encodedQueryFor(cadeia de caracteres "tableName")"
Especifica que o valor do elemento é uma consulta codificada na tabela especificada.
Chamar esta função em um parâmetro informa ao proxy que o valor do parâmetro é uma Cadeia de caracteres de consulta codificada na tabela especificada. O proxy analisa a consulta codificada e criptografa os campos dessa consulta que devem ser criptografados.
| Nome | Tipo | Descrição |
|---|---|---|
| tableName | Cadeia de caracteres | A tabela na qual você espera que a consulta seja executada. |
| Tipo | Descrição |
|---|---|
| vazio |
ParameterValue – valueFor(cadeia de caracteres "tableName", cadeia de caracteres "fieldName")
Especifica que o valor do elemento seja mapeado para o campo especificado na tabela especificada.
Chamar este método em um valor de elemento informa ao proxy que o valor desse elemento é mapeado para o campo especificado na tabela especificada. Dessa forma, o proxy verifica se o campo deve ser criptografado.
| Nome | Tipo | Descrição |
|---|---|---|
| tableName | Cadeia de caracteres | O nome da tabela. |
| fieldName | Cadeia de caracteres | O nome do campo. |
| Tipo | Descrição |
|---|---|
| vazio |