我们目前在我们的应用中使用Firebase崩溃报告 - 我们注意到一些奇怪的事情。为了帮助我们调试任何崩溃,我们使用FirebaseCrash.log添加有关服务器请求/响应的信息。
但是最近,我们注意到日志正在被编辑。从我们可以看出,这发生在服务器端,给我们留下如下所示的日志:
7:51:11.914 AM gmp_nav20_crash < - 201
https://[REDACTED_DOMAIN_NAME][REDACTED_URL_BASIC]
(287毫秒,未知长度的身体)7:51:11.626 AM gmp_nav20_crash - > POST
https://[REDACTED_DOMAIN_NAME][REDACTED_URL_BASIC]
http / 1.1(67字节正文)
我们是否有办法至少在某些域名中禁用此功能?它可以准确地追踪出现问题的难度,并且没有为我能看到的用户提供任何有意义的保护。
答案 0 :(得分:3)
由于上面的评论显示这是不可配置的,并且您希望结果可以从Firebase控制台读取,因此我建议以一种混淆URL的方式处理URL,同时保留其可读性。请确保您只对非敏感信息做到这一点 - 特别是如果您在欧洲有新的GDPR规定。
可能很简单:
url.replaceAll("\\.", "[dot]");
但我建议屏蔽协议(也许是斜线)
url.replaceAll("https://", "[secure]")
.replaceAll("http://", "")
.replaceAll("\\.", "[dot]");
修改(要回答赏金问题:“根据Firebase政策跟踪Base64编码的网址和域名是否合法?”)
除非您有强烈的通知,并且用户事先肯定(即选择加入)同意,否则您不会将个人身份信息与非个人身份信息合并。
假设您没有征得同意,我认为您还应该从网址中删除任何查询或可识别信息。
同样,这可能就像在第一个或最后一个斜线(如果存在)处拆分字符串一样简单,这取决于网址的哪些部分对您很重要
答案 1 :(得分:1)
将URL字符串转换为base64字符串并发送编码字符串
public static String toBase64(String stringToEncode){
String base64 = null;
try {
byte[] data = stringToEncode.getBytes("UTF-8");
base64 = Base64.encodeToString(data, Base64.DEFAULT);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return base64;
}
FirebaseCrash.report(new Exception("Error while downloading image with URL (Base 64 encoded):" + StringUtils.toBase64(s)));