СМС - Как избежать банкротства? - PullRequest
5 голосов
/ 22 августа 2009

Я кодирую новый веб-сайт, который будет требовать, чтобы пользователи вводили свой номер мобильного телефона, проблема, с которой я сталкиваюсь, заключается в том, что мне нужно убедиться, что пользователь фактически является владельцем (или в данном случае имеет доступ к) номер мобильного телефона.

Решение, которое я придумала, заключается в том, что после отправки номера я отправляю им SMS с токеном и прошу пользователя ввести токен на моем веб-сайте, как это делает Календарь Google. Однако у меня ограниченный бюджет, и я должен убедиться, что пользователь А не отправит 100 000 номеров мобильных телефонов, если это произойдет, я разорюсь, так как каждое отправленное SMS обойдется мне в 0,10 доллара США.

До сих пор я придумал следующие решения:

  • используйте CAPTCHA (удерживает некоторых пользователей подальше, и он все еще уязвим для ручной регистрации)
  • ограничить количество токенов для данного запроса IP-адреса (динамические IP-адреса, прокси и т. Д.)
  • ограничить количество токенов, отправляемых на данный номер мобильного телефона (пользователь может запросить токены для всех доступных номеров, и когда реальный пользователь попытается запросить законный токен, его номер будет уже заблокирован)

Ни одно из этих решений не идеально, как вы предлагаете мне подойти к этой проблеме?

Ответы [ 5 ]

6 голосов
/ 22 августа 2009

В недавнем проекте мы связывали номера SMS с учетной записью пользователя. Каждой учетной записи нужна была CAPTCHA и активация по электронной почте. Пользователь может активировать SMS с помощью токена, как вы используете.

Вы можете оценить ограничение IP-адресов (не общее ограничение). Не более 10 запросов от IP в течение 5 минут или что-то в этом роде.

И / или вы можете ограничить количество невыполненных SMS-запросов. После того, как IP-адрес запрашивает токен для SMS, он должен быть отправлен до того, как этот IP сможет запросить другой номер SMS. Или не более 10 выдающихся SMS-токенов на IP в день.

Также, как сказал @Alan, мы ограничиваем количество наших SMS-сообщений в месяц.

3 голосов
/ 24 августа 2009

Вы можете делать то, что делает Твиттер, а именно, чтобы пользователь отправлял вам токен (вместо того, чтобы отправлять ему текстовые сообщения).

Для этого потребуется найти поставщика, который позволит вам получать тексты бесплатно (или близко к нему), но это может быть проще.

3 голосов
/ 22 августа 2009

Я бы использовал комбинацию CATPCHA и Limit запросов для данного номера мобильного телефона.

Кроме того, вы должны иметь возможность указать с помощью вашего SMS-агрегатора установленный лимит в месяц. После того, как вы достигнете этого предела, сервис отключается. Таким образом, если вы являетесь жертвой атаки, вы будете нести ответственность только за ограниченную сумму денег.

Вместо SMS вы можете использовать автоматизированную услугу, при которой телефонный номер произносит одноразовый пароль (через речь 2). Эти услуги схожи по цене с SMS и менее подвержены злоупотреблению спамом, так как это приводит к дополнительным расходам.

Twilio стоит 0,03 доллара в минуту или в данном случае 0,03 доллара за звонок.

0 голосов
/ 22 августа 2009

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

Ограничение на то, что могут делать люди (не более 10 запросов от 1 ip за 10 минут, один номер телефона может получать только 3 текста в неделю, капча перед вводом номера), но более важно, если люди не контролируют контент сообщения нет реальной причины использовать его.

0 голосов
/ 22 августа 2009

Почему SMS стоит вам ни копейки? Используйте адрес EMAIL, который связан с каждой системой SMS (по крайней мере, здесь, в США).

http://www.sms411.net/2006/07/how-to-send-email-to-phone.html

...