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 ), é 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) da informação a ser ofuscada, definir uma expressão regular para que a informação seja identificada (Custom regex), e definir os símbolos nos quais a informação será transformada (no campo Replace to).
É possível ofuscar múltiplas informações com um único interceptor de Log Obfuscation usando uma expressão regular adequada (como explicado aqui). |
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:
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:
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:
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).
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:
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.
Share your suggestions with us!
Click here and then [+ Submit idea]