[Из песочницы] Как не надо настраивать антифрод-правила по географии пользователя
Недавно мне нужно было пополнить свой кошелёк в Элекснете с банковской карты Альфа-Банка — стандартная процедура, которую я успешно проделывал уже несколько раз. Как обычно, после авторизации в кошельке и ввода данных карточки вместо привычного сообщения об успехе я получил следующую ошибку:
Упс. «Anti-black list»! Я и забыл, что в этот раз я нахожусь за границей.
Некоторое время я потратил на безуспешные попытки оплатить, но увы. От отчаяния даже попробовал проделать эту операцию через Tor, но и это разумеется не помогло (тратить время на то, чтобы разобраться, как быстро задать в настройках Tor выходные ноды только из определённой страны, мне тем более не хотелось), но зато я пару раз получил вторую интересную ошибку со следующим текстом:
«User IP address country does not match BIN country»
То есть, в этот раз недовольство антифрод-системы Элекснета вызвало несовпадение страны IP-адреса моего зарубежного провайдера со страной эмитента карты.Самое печальное, что сообщение об ошибке не предоставляет мне как пользователю никакого выбора, кроме как попытаться повторить операцию или отказаться от неё. И окошко на экране при этом даже не содержит никаких рекомендаций или ссылок — куда бежать, кому написать и что сделать, чтобы всё-таки всё получилось. И уж наверняка оно доконает тех пользователей, которые не знают английский язык, поскольку всё в окошке написано по-русски, вот только само сообщение об ошибке на английском.
Собственно, почему всё это так плохо?
Из приведённых ошибок можно сделать выводы о том, как устроены антифрод-правила у Элекснета (как минимум те, которые работают на операции пополнения с карты):
Есть некий список разрешённых стран, вероятнее всего это Россия и страны СНГ. Соответственно, операции пополнения разрешены только с IP-адресов этих стран, все остальные запрещены. Другое правило проверяет совпадение географии IP пользователя и страну эмитента. Здесь возможны варианты: вполне вероятно, что для России и СНГ сделано общее географическое пространство (то есть, возможно пополнить счёт из Украины российской картой, хотя я это не проверял). Хуже, если логика более строгая: страна пользователя обязательно должна совпадать со страной эмитента и никак иначе. Почему же тогда я получил вторую ошибку, при этом антифрод не ругнулся на «anti-black list»? Вот тут закрадывается подозрения, что в этот момент IP-адрес выходной ноды Tor возможно как раз и оказался из разрешённой страны, а вот сама страна с Россией (эмитентом карты) не совпала. Караул! В итоге здесь имеется система из нескольких простых антифрод-правил, которые, думаю, одинаково успешно как борятся с фродом, так и усложняют жизнь нормальным пользователям вроде меня. Это всё о том, как не надо делать.
Теперь собственно о том, как можно (и нужно) было сделать правильно.
Прежде всего, я не являюсь новым клиентом Элекснета. Если более точно — я уже несколько раз использовал эту же самую карточку для пополнения одного и того же кошелька. То есть, мой паттерн платёжного поведения очень простой и прозрачный: примерно раз в месяц я пополняю свой кошелёк с одной и той же карты. Предположить, что фродер теперь будет с моей украденной карточки пополнять мой же кошелёк, несколько странно. Отсюда первый правильный шаг: необходимо запоминать и карту и операции по ней, и применять строгую политику только при появлении новой карты в системе (то есть той, о которой ничего не известно и она зафиксирована впервые). Если же карта делает одно и то же типовое действие (в данном случае пополняет кошелёк) пятый раз подряд, то вероятнее всего это делает именно владелец карты и в этом месте нужо смягчить антифрод-политику и конкретную операцию разрешить независимо от географической привязки как пользователя, так и эмитента карты. Другой вариант — «плясать» от кошелька и запоминать историю платёжного поведения именно с точки зрения кошелька (откуда пополняется, куда платит или переводит и т.д.). Ещё нужно вспомнить о том, что же такое собственно кошелёк в системе Элекснет. Номером кошелька по сути является номер телефона его владельца. А при авторизации необходимо указать пару номер телефона + пароль для доступа к кошельку, выданный при регистрации. Но ведь Элекснет прекрасно умеет слать СМС по любому действию в системе, в моём случае я получаю СМС и при пополнении кошелька, и при платеже с него. Так что же стоит в случае, по мнению Элекснета, подозрительной операции просто запросить её подтверждение по СМС? Это распространённая стандартная практика, которая применяется во множестве платёжных систем (усиленная, или двухфакторная авторизация, как, например, в Яндекс.Деньгах) и в банках (здесь самый очевидный пример — авторизация 3D Secure): в момент совершения операции пользователь получает СМС с кодом, который вводит на странице своего платёжного оператора, тем самым подтверждая совершение операции. И более того, свой номер телефона пользователь Элекснета сообщает сразу же при регистрации и в дальнейшем этот номер равен номеру пользовательского кошелька, так что всё, что остаётся сделать — это отправить пользователю СМС и дождаться подтверждения операции. Если в антифрод-системе наличествуют различные блэклисты (это нормально), то должна существовать также и гибкая логика их использования, и для этого нужно учитывать много факторов помимо собственно блэклиста. Подход «в лоб» (этим всё запретить, другим всё разрешить) является неудобным, негибким и портит жизнь обычным пользователям при первой же возможности. И наконец, если уж антифрод-правила сработали и запретили операцию, то разумеется не обязательно сообщать пользователю, почему именно так случилось (помним о том, что это может быть фродер). Но обязательно нужно сообщить о том, как ему решить проблему! (поскольку именно это и важно честному пользователю, попавшему под лошадь антифрод). А именно, куда ему написать или позвонить, какие простые системные настройки подкрутить и так далее, и всё это на человеческом языке. В моём случае идеальным вариантом было бы сообщение типа: «Извините! Операция не проходит. Мы вас не узнаём, вероятно, вы пытаетесь пополнить кошелёк не так, как обычно. Мы сейчас пришлём вам код по СМС, введите его в окошке ниже, чтобы мы могли убедиться, что вы это вы». Как минимум эти простые шаги могли бы очень сильно уменьшить количество невинно страдающих клиентов, которые имели неосторожность поехать за границу, и только в результате своего географического перемещения были лишены возможности пользоваться сервисом.
Если идти дальше по пути совершенствования антифрод-правил, то можно добавлять более сложную логику, например, учитывать скорость перемещения пользователя между странами (платёж из разных стран через день гораздо более вероятен, чем с разницей в пять минут), учитывать число попыток совершения операции (в том числе и для разных карт, тем самым предотвращая перебор номеров карт), факт использования прокси-серверов или анонимайзеров и так далее.
Здесь важно ещё добавить, что при совершении мною дальнейших действий с кошельком антифрод Элекснета мне не препятствовал: после того, как я пополнил свой счёт с помощью друга в России (пришлось давать ему по скайпу пошаговые инструкции), я спокойно смог сам вывести деньги со своего кошелька на счёт в другом российском банке, по-прежнему будучи за границей. И вот это тоже вызывает вопросы. Ведь с точки зрения антифрод-политики важно пресекать не только подозрительные попытки использования банковских карт, но и, возможно, нетипичные манипуляции со средствами на самом кошельке, и прежде всего это касается рискованных направлений платежа, в частности, вывода денежных средств (а это конечная цель любого фродера, и чем быстрее тем лучше!). Оправдать всё это могу только небольшой суммой операции (в пределах нескольких тысяч рублей).
В итоге цепочка моих действий была следующей:
Несколько раз периодически пополняю свой кошелёк с банковской карты, находясь в Москве — никаких проблем. Теперь пополняю кошелёк с той же российской карты из-за границы — несколько попыток и каждый раз пополнение блокируется антифрод-правилами. Пытаюсь сделать то же самое через Tor (очевидно, что IP-адрес запросто мог отличаться от изначальной страны) — то же самое, операция невозможна. Обращаюсь за помощью к другу в Москве и по скайпу шлю ему подробные инструкции — наконец-то операция проходит и кошелёк пополнен. Сразу после этого вывожу деньги с кошелька на карту другого российского банка, географически находясь всё там же, за рубежом, откуда пополнить кошелёк мне не разрешалось. Никаких вопросов, операция прошла успешно, деньги выведены. Мораль сей истории такова: люди перемещаются по миру, но для их финансовых сервисов это не должно служить источником проблем, как то: блокирование банковских карт, невозможность пополнить электронный кошелёк или заплатить за собственный московский мобильный телефон, находясь в другом полушарии.
Боритесь с фродом правильно!