Log Obfuscation

Este interceptor é usado para ocultar dados selecionados (presentes no header ou body de uma requisição ou resposta) no log do Trace.

Para criar logs no Trace (acessados por meio do ícone icon view), é necessário utilizar o Log interceptor. Se quiser que os dados sejam criptografados ao invés de ofuscados, é só configurar essa opção no próprio interceptor de Log.

Configurando o interceptor

Para configurar o interceptor de Log Obfuscation, é necessário informar a localização (Location — body ou header) da informação a ser ofuscada. Se a informação que você deseja omitir estiver localizada no corpo (body) da requisição, defina uma expressão regular para que a informação seja identificada (Custom regex). Se estiver no header, informe o atributo (Attribute), usando letras minúsculas. Por fim, defina os símbolos nos quais a informação será transformada (no campo Replace to).

log obfuscation
É possível ofuscar múltiplas informações com um único interceptor de Log Obfuscation usando uma expressão regular adequada (como explicado aqui). Válido para informações que estiverem no body da requisição.

Exemplos de ofuscamento de uma única informação

Imagine que o corpo de uma requisição contenha as informações a seguir:

{
  "name": "Jonathan Crane",
  "alias": "Scarecrow",
  "baseOfOperations": [
    "Gotham City",
    "Arkham Asylum"
  ],
  "status": {
    "alignment": "bad",
    "citizenship": "american",
    "maritalStatus": "single",
    "occupation": [
      "anarchist",
      "serial killer",
      "former psychiatrist",
      "university professor"
    ],
    "active": true
  },
  "characteristics": {
    "gender": "male",
    "height": 1.83,
    "weight": 64,
    "eyes": "blue",
    "hair": "brown"
  }
}

Para ofuscar um campo é necessário criar uma expressão regular adequada. Se quisermos ofuscar o campo "name", por exemplo, podemos incluir as configurações:

log obfuscation ex name

Como resultado, o Trace mostrará o seguinte log para essa requisição:

{
  "name": **********,
  "alias": "Scarecrow",
  "baseOfOperations": [
    "Gotham City",
    "Arkham Asylum"
  ],
  "status": {
    "alignment": "bad",
    "citizenship": "american",
    "maritalStatus": "single",
    "occupation": [
      "anarchist",
      "serial killer",
      "former psychiatrist",
      "university professor"
    ],
    "active": true
  },
  "characteristics": {
    "gender": "male",
    "height": 1.83,
    "weight": 64,
    "eyes": "blue",
    "hair": "brown"
  }
}

Para ofuscar o campo "occupation", podemos incluir as configurações:

log obfuscation ex occupation

Como resultado, o Trace mostrará o seguinte log para essa requisição:

{
  "name": "Jonathan Crane",
  "alias": "Scarecrow",
  "baseOfOperations": [
    "Gotham City",
    "Arkham Asylum"
  ],
  "status": {
    "alignment": "bad",
    "citizenship": "american",
    "maritalStatus": "single",
    "occupation": ##########,
    "active": true
  },
  "characteristics": {
    "gender": "male",
    "height": 1.83,
    "weight": 64,
    "eyes": "blue",
    "hair": "brown"
  }
}

Por fim, para ofuscar o campo "characteristics", uma forma é incluir as configurações:

log obfuscation ex characteristics

Como resultado, o Trace mostrará o seguinte log para essa requisição:

{
  "name": "Jonathan Crane",
  "alias": "Scarecrow",
  "baseOfOperations": [
    "Gotham City",
    "Arkham Asylum"
  ],
  "status": {
    "alignment": "bad",
    "citizenship": "american",
    "maritalStatus": "single",
    "occupation": [
      "anarchist",
      "serial killer",
      "former psychiatrist",
      "university professor"
    ],
    "active": true
  },
  "characteristics": {****}
}

Se combinarmos os três interceptores, sequencialmente, o Trace mostrará o seguinte log para essa requisição:

{
  "name": **********,
  "alias": "Scarecrow",
  "baseOfOperations": [
    "Gotham City",
    "Arkham Asylum"
  ],
  "status": {
    "alignment": "bad",
    "citizenship": "american",
    "maritalStatus": "single",
    "occupation": ##########,
    "active": true
  },
  "characteristics": {****}
}

Porém, uma forma melhor de ofuscar múltiplos campos é utilizando uma única expressão regular mais abrangente (veja nos exemplos abaixo).

Exemplo de ofuscamento de informação do header

Para ofuscar uma informação contida no header da requisição, selecione a localização e informe o atributo.

O atributo deve ser escrito usando letras minúsculas.

Atributos informados em letras maiúsculas ou começando por letra maiúscula não serão ocultados e assim, aparecerão no Trace.

Exemplo de configuração para ocultar o atributo authorization:

log obfuscation header

Como resultado, o Trace mostrará o seguinte log para essa requisição:

host: api-testing.sensedia.com
authorization: **********
user-agent: PostmanRuntime/7.28.4
accept: */*
postman-token: 1234a-bcd5-67abc-defg789xyz
accept-encoding: gzip, deflate, br
x-forwarded-for: 123.45.678.900
x-forwarded-proto: https
x-envoy-external-address: 123.45.678.900
x-request-id: abcdefg-456f-789g-00gh-hijk10
content-length: 0

Configure um interceptor de Log Obsfuscation para cada atributo que você deseja ocultar. Para atributos do header, não há como configurar múltiplas informações no mesmo interceptor.

Veja a seguir como ofuscar múltiplas informações do body da requisição.

Expressão regular para múltiplas informações

Quando o conjunto de dados fizer parte de um JSON, a expressão regular para múltiplas informações segue a estrutura:

(?<=(<chaves>):)\s*(<regex_tipos>)
O "\s*" da expressão regular serve para ignorar quaisquer espaços brancos entre chave e valor.

Tanto as chaves (informações) quanto as regex para cada tipo de valor devem ser separados por "|".

As regex para os correspondentes tipos de valor são:

  • números, booleanos e null: [\+\-\w.]+

  • strings: "[^"]*"

  • arrays simples: \[[^\]]*\]

  • objetos simples: \{[^\}]*\}

Exemplos de ofuscamento de múltiplas informações

Agora, imagine que o corpo de uma requisição contenha as informações a seguir:

{
  "name": "Pamela Lillian Isley",
  "alias": "Poison Ivy",
  "baseOfOperations": "Gotham City",
  "status": {
    "alignment": "neutral",
    "citizenship": "american",
    "maritalStatus": "single",
    "occupation": [
      "scientist",
      "eco-terrorist"
    ],
    "active": true
  },
  "characteristics": {
    "gender": "female",
    "height": 1.68,
    "weight": 50,
    "eyes": "green",
    "hair": "red"
  }
}

Para ofuscar simultaneamente os campos "name", "occupation" e "characteristics", por exemplo, podemos incluir as configurações:

log obfuscation ex multiple

Como resultado, o Trace mostrará o seguinte log para essa requisição:

{
  "name":*****,
  "alias": "Poison Ivy",
  "baseOfOperations": "Gotham City",
  "status": {
    "alignment": "neutral",
    "citizenship": "american",
    "maritalStatus": "single",
    "occupation":*****,
    "active": true
  },
  "characteristics":*****
}

Por outro lado, para ofuscar simultaneamente os campos "name", "citizenship", "maritalStatus", "active", "height" e "weight", por exemplo, basta trocar a regex anterior por:

(?<=("name"|"citizenship"|"maritalStatus"|"active"|"height"|"weight"):)\s*("[^"]*"|[\+\-\w.]+)

Como resultado, o Trace mostrará o seguinte log para essa requisição:

{
  "name":*****,
  "alias": "Poison Ivy",
  "baseOfOperations": "Gotham City",
  "status": {
    "alignment": "neutral",
    "citizenship":*****,
    "maritalStatus":*****,
    "occupation": [
      "scientist",
      "eco-terrorist"
    ],
    "active":*****
  },
  "characteristics": {
    "gender": "female",
    "height":*****,
    "weight":*****,
    "eyes": "green",
    "hair": "red"
  }
}
Diferente do caso em que foram utilizados múltiplos interceptores, os símbolos usados para ofuscar as informações são obrigatoriamente os mesmos.

Vídeo

Quer entender melhor como ofuscar dados do Trace usando o Log Obfuscation? Dê uma olhada no vídeo abaixo, gravado por nosso Sensedier Marco Milleo.

Thanks for your feedback!
EDIT
How useful was this article to you?