Перейти к содержанию

Security и redaction

SDK не является secret manager, но обязан не ухудшать безопасность consumer-приложения: не печатать OAuth-секреты в исключениях, не возвращать access token из diagnostics и не смешивать безопасный debug snapshot с transport internals.

Что SDK редактирует

Секретные значения редактируются в error metadata и diagnostic paths: access token, refresh token, client_secret, заголовок Authorization и близкие OAuth-поля. Это применяется к логируемым metadata и исключениям, чтобы стандартный catch/log AvitoError не раскрывал credentials.

debug_info() возвращает только безопасный снимок: base_url, user_id, флаг auth, таймауты и retry-настройки. В нём нет access token, client_secret и raw headers.

Что остаётся ответственностью consumer-кода

Модели SDK могут содержать пользовательские данные: телефоны, email, тексты сообщений, адреса, цены, идентификаторы заказов. to_dict() и model_dump() сериализуют публичную модель, а не применяют бизнес-редакцию персональных данных. Если consumer-код пишет эти данные в логи, он должен применять собственную политику redaction.

CLI

CLI применяет тот же принцип к human output, JSON output, ошибкам, debug-details и локальной диагностике: секретные поля маскируются перед печатью. Локальные учётные записи первой версии хранятся в plaintext JSON-файле ~/.avito-py/accounts.json; каталог создаётся с правами 0700, файл — с правами 0600, но OS keychain не используется.

Для безопасного ввода секрета используйте скрытый prompt в avito account add или --client-secret-stdin. Явные --client-secret и --api-key нужны только для осознанной автоматизации, потому что shell может сохранить команду в истории.

Ошибки

Ошибки SDK сохраняют поля operation, status, request_id, attempt, method, endpoint. Эти поля достаточны для диагностики большинства интеграционных сбоев и не требуют раскрывать raw request body или OAuth headers.

Практическое правило

Логируйте typed exception metadata и debug_info(). Не логируйте raw payload, binary content и полные to_dict() пользовательских моделей без фильтрации на стороне приложения.

Поля debug_info() описаны в reference по клиенту, metadata ошибок — в reference по исключениям, а CLI-контракт redaction — в CLI reference.