目前在我们的日志记录中,我们记录了如下的异常消息:
string.Format(
"caught exception while validating token, error detail:{0}", this.exception.ToString())
异常消息中有一些敏感信息(jwt):
System.IdentityModel.Tokens.SecurityTokenValidationException: Jwt10315:签名验证失败。钥匙尝试: ' System.IdentityModel.Tokens.X509AsymmetricSecurityKey System.IdentityModel.Tokens.X509AsymmetricSecurityKey System.IdentityModel.Tokens.X509AsymmetricSecurityKey'
我在考虑解析异常消息字符串,删除敏感信息然后记录它。使用此剥离数据创建一个新的异常对象,然后将其传递给其他API
我还有其他办法吗?
答案 0 :(得分:3)
我正在考虑解析异常消息字符串,删除 敏感信息,然后记录它。
解析异常消息可能无关紧要,因为您将不得不处理不同的信息和消息类型。相反,我只需记录原始异常消息并抛出一个自定义异常,大致描述发生了什么:
try
{
RunSensitiveMethod();
}
catch (SecurityTokenValidationException e)
{
// Perhaps something fancier if needed.
logger.Log(e);
throw new MyCustomException("We screwed up!");
}
答案 1 :(得分:2)
在SecurityTokenValidationException上捕获异常,然后抛出您自己类型的新自定义异常,该异常仅包含所需的信息。您仍然可以记录它,您将确切地知道它的含义。