在改造 2 日志记录中筛选敏感的 json 字段



我正在使用用于 Retrofit2 的自定义拦截器,以便以漂亮的格式记录所有请求/响应 json。

问题是此日志不仅用于本地调试目的,而且还发送到Instabug(类似于Crashlytics(以帮助调试用户报告的问题或崩溃。

因此,该服务中的信息不包含用户身份信息(如电子邮件、密码等(非常重要。

由于在拦截器中我们只获得原始请求/响应是手动检查所有可能的敏感字段并将其从 json 的记录版本中删除的唯一解决方案?

以下是从日志中过滤任何请求/响应参数的简单方法:

// Request patterns to filter
private static final String[] REQUEST_PATTERNS = {
    "Content-Type",
};
// Response patterns to filter
private static final String[] RESPONSE_PATTERNS = {"Server", "server", "X-Powered-By", "Set-Cookie", "Expires", "Cache-Control", "Pragma", "Content-Length", "access-control-allow-origin"};
// Log requests and response
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
    @Override
    public void log(String message) {
        // Blacklist the elements not required
        for (String pattern: REQUEST_PATTERNS) {
            if (message.startsWith(pattern)) {
                return;
            }
        }
        // Any response patterns as well...
        for (String pattern: RESPONSE_PATTERNS) {
            if (message.startsWith(pattern)) {
                return;
            }
        }
        Log.d("RETROFIT", message);
    }
});
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

以下是完整的要点:

https://gist.github.com/mankum93/179c2d5378f27e95742c3f2434de7168

最新更新