Безопасность
Граница доверия между Incident и Report
Какие данные остаются в приложении, что может покинуть процесс и какие гарантии даёт StrictErrorSanitizer.
Граница доверия между Incident и Report
ErrorIncident содержит исходные Error и StackTrace, сведения об источнике, оценку, Environment и собранный контекст. ErrorClassifier, ErrorPolicy, ErrorPresenter, ErrorRecoveryController и ErrorManagerObserver могут изучать его внутри приложения. ErrorReporter его не получает.
ErrorReport содержит стабильные строки, enum, сведения о приложении и очищенный контекст. Только эту публичную модель принимает ErrorReporter.
Очистка по умолчанию
StrictErrorSanitizer рекурсивно маскирует поля, имена которых указывают на авторизацию, cookie, пароль, секрет, Token, API Key или Session. Он также скрывает похожие присваивания в тексте. В release-режиме исходное сообщение Error заменяется именем его типа времени выполнения.
ErrorSanitizer не может интерпретировать любой пользовательский формат данных. Конфиденциальное значение под неочевидным именем или внутри непрозрачного toString() остаётся риском.
Проверка ErrorReporter
Перед включением ErrorReporter убедитесь, что:
- каждое поле имеет диагностическое назначение и ограниченный размер;
- тела запросов, учётные данные и персональные сведения исключены;
- транспорт использует аутентифицированное шифрование;
- определены правила хранения и удаления;
- внутренняя ошибка
ErrorReporterнаправляется в прямой нерекурсивный канал; - сохранение другого обработчика сбоев не создаст повторную удалённую отправку.