Можно ли использовать DjExperExceptionReporterFilter с чем-то другим, чем AdminEmailHandler?

Я пытаюсь отфильтровать конфиденциальную информацию, используя Django @sensitive_post_parameters . Я думал, что добавление этих аннотаций по нескольким конкретным функциям будет достаточно, но это не сработает. Я установил SafeExceptionReporterFilter останова в SafeExceptionReporterFilter и она только ломается при вызове из AdminEmailHandler а не других обработчиков. Что мне не хватает?

Даже если вы используете SafeExceptionReporterFilter , исключения по-прежнему будут содержать конфиденциальные данные (например, переменные ENV вашего сервера и другие данные времени исполнения).

Чтобы не подвергать уязвимые данные, вы не должны использовать этот фильтр. Вместо этого напишите свое собственное промежуточное ПО Exception Handler и выборочно (рекурсивно?) Извлеките нужные данные в журналах.

См. sys.exc_info о том, как получить sys.exc_info исключения и как ее использовать для ваших нужд.

Даже если вы перейдете с помощью CustomHandler, вы будете ограничены определенным обработчиком, и, насколько мне известно, сторонние обработчики не будут использовать SafeExceptionReporterFilter .

Вы можете написать собственный обработчик, который использует django.views.debug.ExceptionReporter для форматирования исключения.

Пример использования ExceptionReporter :

 from django.views.debug import ExceptionReporter # exc_type, exc_value, traceback are a standard exception # tuple as returned by sys.exc_info reporter = ExceptionReporter(request, exc_type, exc_value, traceback) html_report = reporter.get_traceback_html() text_report = reporter.get_traceback_text() 

ExceptionReporter будет использовать ExceptionReporterFilter определяемый параметром DEFAULT_EXCEPTION_REPORTER_FILTER который по умолчанию – SafeExceptionReporterFilter .

Посмотрите на реализацию AdminEmailHandler , чтобы получить информацию о том, как создать пользовательский Handler .