Table of contents

Фильтрация чувствительных данных

Иногда в событиях могут оказаться данные, которые не должны покидать ваш сервер или устройство пользователя. Фильтрация помогает скрыть такие поля и не отправлять их в Хоук.

Фильтрация работает на двух уровнях:

  1. На стороне кэтчера (в вашем приложении, до отправки события).
  2. На стороне бэкенда Хоука (дополнительная защита на сервере).

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

Он принимает объект события, в котором можно удалить или модифицировать данные. Вы можете вернуть false, тогда событие не будет отправлено вовсе.

const hawk = new HawkCatcher({ token: 'ВАШ_ТОКЕН_ИНТЕГРАЦИИ', beforeSend(event) { // Удаляем заголовок авторизации if (event.payload.context.request?.headers?.Authorization) { delete event.payload.context.headers.Authorization; } // Для отмены отправки, вернем false if (event.title.startsWith('Script Error.')) { return false; } return event; } });

Дополнительно мы автоматически фильтруем потенциально опасные данные уже на сервере Хоука.

Удаляются:

  • значения, которые выглядят как номера банковских карт (по регулярным выражениям);
  • поля, чьи названия или значения содержат следующие ключевые слова:
// Authorization and sessions 'auth', 'authorization', 'access_token', 'accesstoken', 'token', 'jwt', 'session', 'sessionid', 'session_id', // API keys and secure tokens 'api_key', 'apikey', 'x-api-key', 'x-auth-token', 'bearer', 'client_secret', 'secret', 'credentials', // Passwords 'password', 'passwd', 'mysql_pwd', // Encryption keys 'private_key', 'ssh_key', // Payments data 'card', 'cardnumber', 'card[number]', 'creditcard', 'credit_card', 'pan', 'pin', 'security_code', 'stripetoken', 'cloudpayments_public_id', 'cloudpayments_secret', // Конфигурации и подключения 'dsn', // Personal Data 'ssn',

Такая защита снижает риск утечки конфиденциальных данных даже если вы случайно не отфильтровали их на клиентской стороне.