desensitivize

A library for redacting sensitive info from data containers

Usage

Sensify works by parsing struct tags. In order to remove sensitive data from your structs they need to have a sensitive tag. Note that the value of the tag is irrelevant.

Constraints

The library works with all kinds of data containers: structs, slices, arrays, maps and pointers to these containers. Passing other type of data would result in a overhead due to making a copy of the object.

Example

type SomeStruct struct {
  FieldA string
  FieldB string `sensitive:"-"`
}

func doStuff(someStruct SomeStruct) {
  fmt.Println(someStruct)
  removedSensitiveDataStruct := desensitivize.Redact(someStruct)
  fmt.Println(removedSensitiveDataStruct)
  fmt.Println(someStruct)
}

func main() {
  someStruct := SomeStruct{
    FieldA: "field A data",
    FieldB: "field B sensitive data",
  }
  
  doStuff(someStruct)
}

The output of the following code would be the following one

{field A data field B sensitive data}
{field A data }
{field A data field B sensitive data}

Beware

If you pass a map with struct keys which struct has fields marked as sensitive it would redact the keys too which may lead to collisions and loss of data

NOTE

This package is still in experimental stage and may occasionally throw a panic

GitHub

View Github