使用反射防止秘密被记录

时间:2019-03-22 19:39:16

标签: go

假设我们有一种封装敏感信息的类型,只能通过调用其SecretValue方法进行访问:

type Secret struct {
    secret string
}

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

我们希望防止敏感信息secret泄漏到日志中。具体来说,我们要确保由string返回的SecretValue()以后再不作为任何可以写入stdout,stderr或文件的方法的参数传递,即{{ 1}},fmt.Printffmt.Println

  1. 是否可以通过代码的静态分析或在运行时使用反射来实施这种策略?如果是这样,将如何从高层次实现?

  2. 是否甚至可以枚举“标准库中所有可能写入stdout,stderr或文件的方法”?如果是这样,怎么办?

0 个答案:

没有答案