Использование отражения, чтобы предотвратить регистрацию секрета - PullRequest
2 голосов
/ 22 марта 2019

Скажем, у нас есть тип для инкапсуляции конфиденциальной информации, доступ к которому можно получить только путем вызова метода SecretValue:

type Secret struct {
    secret string
}

func (s *Secret) SecretValue() string {
    return s.secret
}

Мы хотим предотвратить утечку конфиденциальной информации secret в журналы.В частности, мы хотим убедиться, что string, возвращаемый SecretValue(), никогда не будет передан в качестве аргумента любому методу, который может записать в stdout, stderr или файл, то есть таким методам, как fmt.Printf, * 1009.*, fmt.Errorf и т. Д.

  1. Возможно ли с помощью статического анализа кода или с помощью отражения во время выполнения реализовать такую ​​политику?Если да, то как на высоком уровне это будет достигнуто?

  2. Можно ли даже перечислить "все методы в стандартной библиотеке, которые могут писать в stdout, stderr,или файл "?Если да, то как?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...