Firebase Crash Logs с измененными URL-адресами

В настоящее время мы используем отчеты Firebase Crash в нашем приложении, и мы заметили что-то странное. Чтобы помочь нам отладить любые сбои, мы используем FirebaseCrash.log для добавления информации о запросах и ответах сервера на наши серверы.

Но в последнее время мы заметили, что журналы редактируются. Из того, что мы можем сказать, это происходит на стороне сервера, оставляя нас с журналами, которые выглядят так:

7: 51:11.914 AM gmp_nav20_crash <- 201 https://[REDACTED_DOMAIN_NAME][REDACTED_URL_BASIC] (287ms, тело неизвестной длины)

7: 51:11.626 AM gmp_nav20_crash → POST https://[REDACTED_DOMAIN_NAME][REDACTED_URL_BASIC] http/1.1 (67-байтовый корпус)

Есть ли способ отключить это, по крайней мере, для определенных доменов? Это делает отслеживание того, что пошло не так сложнее, чем должно быть, и не дает каких-либо значимых мер защиты для пользователя, которого я вижу.

Ответы

Ответ 1

Поскольку приведенные выше комментарии показывают, что это не настраивается, и вы хотите, чтобы результаты читались с консоли Firebase, я предлагаю обработать URL-адрес таким образом, что он запутывает тот факт, что это URL-адрес, оставляя его доступным для чтения человеком. Просто убедитесь, что вы стараетесь делать это только с нечувствительной информацией, особенно если вы находитесь в Европе с новыми правилами GDPR.

Это может быть так просто:

url.replaceAll("\\.", "[dot]");

Но я бы предложил маскировать протокол (и, возможно, косые черты) тоже

url.replaceAll("https://", "[secure]")
   .replaceAll("http://", "")
   .replaceAll("\\.", "[dot]");

Изменить (Чтобы ответить на вопрос о голосе: "Является ли законным отслеживать кодированные URL-адреса Base64 и имена доменов в соответствии с политиками Firebase?")

В соответствии с страницей политики Firebase

Вы не будете способствовать слиянию персонально идентифицируемой информации с информацией, не связанной с личностью, если у вас нет надежного уведомления, а пользователь ранее утвердительно (т.е. отказался) согласиться на это слияние.

Предполагая, что вы не просили согласия, я хотел бы сказать, что вы также должны лишать любые запросы или идентифицируемую информацию из URL-адреса.

Опять же, это может быть так же просто, как разбиение строки на первый или последний слэш (если есть), в зависимости от того, какие части URL важны для вас

Ответ 2

преобразовать строку 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)));