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 ![]() |
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](_images/log-obfuscation.png)
É 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](_images/log-obfuscation_ex-name.png)
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](_images/log-obfuscation_ex-occupation.png)
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](_images/log-obfuscation_ex-characteristics.png)
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](_images/log-obfuscation_header.png)
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](_images/log-obfuscation_ex-multiple.png)
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.