Как побороть спам на 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; }
Такое небольшое правило убирает большую часть спама, но не всю. Дальше можно добавить еще несколько правил:
- Сообщение должно содержать кириллические символы (можно использовать если ваша аудитория состоит только из русскоговорящих). Таким образом можно избавиться от "зарубежного" спама.
- Сообщение не должно содержать определенные ключевые слова. Анализируете спам, смотрите какие "мусорные" слова там повторяются и добавляете фильтр по ним.
- Премодерация публикуемых сообщений (муторно, долго, но иногда без этого не обойтись)
- Черный список по IP
Рано или поздно все эти правила обойдут или они будут создавать неудобства для "хороших" посетителей сайта. Если знаете как продуктивнее бороться со спамом, напишите комментарий, буду благодарен.
В этом блоге стоит каптча и блокировка по словам, но всё равно изредка прилетает спам, поэтому включена премодерация для неавторизованных пользователей. Но и это иногда обходится, приходит спам от авторизованного пользователя, хотя на сайте стоит регистрация через подтверждение e-mail. Приходиться вручную блокировать таких пользователей.
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.