Проверка, является ли транзакция мошеннической

Carding Forum

Professional
Messages
2,788
Reaction score
1,198
Points
113
Для выявления признака, что платеж является мошенническим, существует большое количество эвристик. Некоторые компании могут похвастаться цифрой под 200 эвристик. Хотя у меня сразу возникают подозрения, что некоторые из этих эвристик либо ничем не подкреплены, либо являются следствием какой-то другой эвристики, либо это вовсе костыль, позволяющий лучше подгонять результат под обучающую выборку и не дающий никакого эффекта на реальных данных. Большое количество эвристик дает лишь: переобученную модель, неправильное распознавание является ли транзакция мошеннической и уменьшение производительности приложения.

Поэтому перечислю лишь основные и, в общем случае, наиболее эффективные эвристики:

одна карта – много IP, и обратный случай: один IP – много карт;
одна карта – много покупок/неудачных попыток;
один клиент – много карт (особенно эмитированных различными банками);
один клиент – много индексов, email'ов;
имя клиента не совпадает с именем владельца эккаунта на сайте мерчанта (если есть);
страна клиента не совпадает со страной владельца эккаунта на сайте мерчанта (если есть);
оплата происходит ночь (по локальному времени клиента).

Но «много» это сколько? За какой период времени (5 секунд или 2 недели)? Как обойти проблему, что вес фильтра x1 в не равен весу фильтра x2, а величины их весов должны динамически меняться в процессе работы приложения?

Часто основным подходом является наивное присвоение фиксированного значения для какого-то из фильтров и последующая обработка этих условий в конструкциях типа (это псевдокод, а не 1С):

if (количество_карт_с_одного_ip > 4) {
статус_платежа = отклонен;
return;
}
else {
if (количество_покупок_с_карты_за_1_час > 5) {
статус_платежа = отклонен;
return;
}
else {
// continuation magic…
}
}

// проведение платежа…

Не забывайте менять стратегии для удачных вбивов!
 
Top