假设我们有一种封装敏感信息的类型,只能通过调用其SecretValue
方法进行访问:
type Secret struct {
secret string
}
func (s *Secret) SecretValue() string {
return s.secret
}
我们希望防止敏感信息secret
泄漏到日志中。具体来说,我们要确保由string
返回的SecretValue()
以后再不作为任何可以写入stdout,stderr或文件的方法的参数传递,即{{ 1}},fmt.Printf
,fmt.Println
等
是否可以通过代码的静态分析或在运行时使用反射来实施这种策略?如果是这样,将如何从高层次实现?
是否甚至可以枚举“标准库中所有可能写入stdout,stderr或文件的方法”?如果是这样,怎么办?