Как побороть спам на 1С-Битрикс?

Алексей Будагов,

Процесс спама уже настолько эволюционировал, что и e-mail адреса у спамеров реальные и каптча стандартная для них не проблема. Остается только ловить по ключевым словам.

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

AddEventHandler("iblock", "OnBeforeIBlockElementAdd","blockSpam");

// Блокирует добавление элементов со ссылками в описании
function blockSpam(&$arFields) {

    global $USER;

    if (!$USER->IsAuthorized()) {
        if (strpos($arFields["PREVIEW_TEXT"], 'http') !== false) {
            global $APPLICATION;
            $APPLICATION->throwException("К сожалению, Ваш комментарий не может быть опубликован.");
            return false;
        }
    }

    return true;
}

Такое небольшое правило убирает большую часть спама, но не всю. Дальше можно добавить еще несколько правил:

  1. Сообщение должно содержать кириллические символы (можно использовать если ваша аудитория состоит только из русскоговорящих). Таким образом можно избавиться от "зарубежного" спама.
  2. Сообщение не должно содержать определенные ключевые слова. Анализируете спам, смотрите какие "мусорные" слова там повторяются и добавляете фильтр по ним.
  3. Премодерация публикуемых сообщений (муторно, долго, но иногда без этого не обойтись)

Рано или поздно все эти правила обойдут или они будут создавать неудобства для "хороших" посетителей сайта. Если знаете как продуктивнее бороться со спамом, напишите комментарий, буду благодарен.

Опубликовано 6 Августа 2018

Возврат к списку

Комментарии