cyberia
@cyberia
Веб-разработчик, плавно перехожу в мобильные разра

Бан телефонных номеров в веб-приложении

Есть доска объявлений, и уже честно достали некоторые товарищи. Решил забанить.
Создал новую таблицу в БД, решил там хранить регекспы и после проверять.

public function addUserAd() {
    ...
    $bannedPhonesPatterns = $this->getBannedPhones();
    foreach( $bannedPhonesPatterns as $patt ) {
        if ( preg_match($patt, $body.$contacts) ) {
            $this->reportError(12);
            $this->terminate();
        }
    }
    ...
}


Сейчас в базе 4 номера но список будет пополняться, беспокоюсь о производительности. Как еще можно организовать подобную систему?
  • Вопрос задан
  • 5416 просмотров
Пригласить эксперта
Ответы на вопрос 1
ruskar
@ruskar
Conflict Intelligence Team
Имхо, обычные способы бана по телефону бесполезны. Просто очень хорошо знаком с работой досок «изнутри» и с методами работы этих самых «некоторых товарищей».

Вот что эти товарищи будут делать, когда увидят сообщение «объявление не размещено, т.к. ваш номер телефона забанен на нашем сайте!»? Да они тупо возьмут другой номер и запостят своё объявление. И так до следующего раза.

На одном из своих проектов я решил проблему по-другому. Задача такая: максимально достоверно опознать «нехорошего человека».

Что я для этого делаю?



Если пользователь указал для своего объявления номер телефона, который у меня в чёрном списке, я:
  1. ставлю ему бессрочные Cookie с меткой что данный пользователь — тот ещё петрушка;
  2. также запоминаю в базе максимальное количество идентифицирующих его данных (IP, юзер агент браузера и т.д.);
  3. его объявление сохраняю в базе и помечаю его как «полускрытое». Это значит, что объявление видно исключительно ему, для него создаётся видимость, будто всё прошло успешно и объявление опубликовано. На самом же деле, всем остальным пользователям сайта оно не показывается (в том числе незалогиненным);
  4. если «нехороший человек» догадался, что я его обманул и теперь он вбивает очередной свой шлак, то, используя пункты 1 и 2 я снова его определяю, заношу в чёрный список уже новый номер, повторяю по новой пукнты 1 и 2.

В результате все «редиски» смотрят на мой сайт довольные, думают что я нормально опубликовал их объявления, не пытаются всеми возможными и невозможными способами обойти защиту (поскольку они подумали, что они её обошли), а в действительности сайт остаётся чистым.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы