在开发过程中,我们在错误日志中添加了 http 请求的详细信息,包括标头,以便更好地了解错误调查。我们的架构师指出我们不应该将敏感信息放在日志中。我的问题是,考虑到访问令牌是短暂的对象,我们是否应该将不记名令牌视为高度敏感的信息。
The OAuth 2.0 Authorization Framework: Bearer Token Usage的建议 :
如果不记名令牌在页面 URL 中传递,攻击者可能能够从历史数据、日志或其他不安全的位置窃取它们。
我认为也不建议将令牌记录到错误日志中。
然而,Asp.Net Core 生成信息消息,其中包括不记名令牌(编码和 JSON 格式)
2017-09-15 08:32:42.571 +00:00 [信息] 无法验证令牌“eyJ0eXAiOiJKV1QiLCJhb(我已经截断了令牌,但可以在 JWT.io 中解码完整的令牌)”。Microsoft.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException:IDX10501:签名验证失败。无法匹配 'kid':'HHByKU-0DqAxxx',令牌:'{"alg":"RS256","typ":"JWT","x5t":"HHByKU-0DqAxxx","kid":"HHByKU- 0DqAxxx"}.{"aud":"https://webjet.group/eb694f3a-xxx","iss":"https://sts.windows.net/5de0e68cxxx","iat":1505464062,"nbf" :1505464062,"exp":1505467962,"acr":"1","aio":"ASQAxxx","amr":["pwd"],"appid":" cc9aa533-xxx","appidacr":"1","e_exp":262800,"family_name":"Freidgeim","given_name":"Michael","groups":[xxx]","2d62738a-xxx"] ,"in_corp":"true","ipaddr":"121.1.1.1","name":"Michael Freidgeim","oid":"138f5eca-xxx","onprem_sid":"S-1-5-21 -xxx","roles":["UATAdmin"],"scp":"user_impersonation","sub":"vTFBQRxxx","tid":"5de0e68c-xxx","unique_name":"Michael.Freidgeim@xxx ","upn":"Michael.Freidgeim@xxx","ver":"1.0"}'。在 System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(字符串令牌,
这是否意味着风险没有那么大,因为微软认为包含在日志中是可以接受的?
还是我们应该从日志中排除 Microsoft/系统信息 LogLevel?这将是非常严格的,因为我们使用信息日志进行调查,以及一些监控/统计(例如登录次数)。
如果我们想同时满足安全性和调查要求,关于将令牌存储到日志中的推荐方法是什么?