Log Obfuscation

Este interceptor es utilizado para ocultar los datos seleccionados (presentes en el header o cuerpo de la petición o respuesta) de logs del Trace.

Para crear registros de logs de Trace (a los que se accede haciendo clic en el icono icon view), es necesario usar el interceptor Log. Si desea que los datos estén cifrados en lugar de ofuscados, esto se puede configurar en el mismo interceptor Log.

Configuración del interceptor

Para configurar el interceptor Log Ofuscation, es necesario informar la ubicación (Location) de la información que se ocultará, una expresión regular personalizada (Custom regex) para identificar esta información y los símbolos que se utilizarán en su lugar (en el campo Replace to).

log obfuscation
Es posible ofuscar múltiples informaciones con un único interceptor Log Obfuscation utilizando una expresión regular apropiada (como se explica aquí).

Ejemplos de ofuscación de una sola pieza de información

Imagine que el cuerpo de una petición contiene la siguiente información:

{
  "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 un campo, tiene que crear una expresión regular adecuada. Por ejemplo, si queremos que el campo "name" se oscurezca, podemos añadir los ajustes:

log obfuscation ex name

Como resultado, Trace mostrará el siguiente Log para esta petición:

{
  "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 el campo "occupation", podemos añadir los ajustes:

log obfuscation ex occupation

Como resultado, Trace mostrará el siguiente Log para esta petición:

{
  "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"
  }
}

Finalmente, para ofuscar el campo "occupation", una manera es añadir los ajustes:

log obfuscation ex characteristics

Como resultado, Trace mostrará el siguiente log para esta petición:

{
  "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": {****}
}

Si combinamos los tres interceptores secuencialmente, Trace mostrará el siguiente log para esta petición:

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

Sin embargo, una mejor manera de ofuscar múltiples campos es usar una única expresión regular más amplia (ver ejemplos abajo).

Expresión regular para información múltiple

Cuando el conjunto de datos es parte de un JSON, la expresión regular para información múltiple sigue la estructura:

(?<=(<claves>):)\s*(<regex_tipos>)
La «\s*» de la expresión regular se utiliza para ignorar cualquier espacio en blanco entre la clave y el valor.

Tanto las claves (información) como la regex de cada tipo de valor deben estar separadas por «|».

Las regex para los tipos de valores correspondientes son:

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

  • strings: "[^"]*"

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

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

Ejemplos de ofuscación de información múltiple

Ahora, imagine que el cuerpo de una petición contiene la siguiente información:

{
  "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 simultáneamente los campos "name", "occupation" y "characteristics", por ejemplo, podemos añadir los ajustes:

log obfuscation ex multiple

Como resultado, Trace mostrará el siguiente log para esta petición:

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

Por otro lado, para ocultar simultáneamente los campos "name", "citizenship", "maritalStatus", "active", "height" y "weight", es suficiente cambiar la regex anterior por:

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

Como resultado, Trace mostrará el siguiente log para esta petición:

{
  "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"
  }
}
A diferencia del caso en que se utilizaron múltiples interceptores, los símbolos usados para ofuscar la información son necesariamente los mismos.
Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]