Фильтрация чувствительных данных
Иногда в событиях могут оказаться данные, которые не должны покидать ваш сервер или устройство пользователя. Фильтрация помогает скрыть такие поля и не отправлять их в Хоук.
Фильтрация работает на двух уровнях:
- На стороне кэтчера (в вашем приложении, до отправки события).
- На стороне бэкенда Хоука (дополнительная защита на сервере).
Если нужно удалить или изменить чувствительные поля перед отправкой события, используйте хук 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',
Такая защита снижает риск утечки конфиденциальных данных даже если вы случайно не отфильтровали их на клиентской стороне.