• 20.04.2022
  • Posted by pavel

Обратился клиент, который имеет форум на CMS «IPB» (Invision Power Board).

Задача

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

Лицензия куплена давно и неправда, обновить движок (в надежде, что поддержка внешних или встроенных сервисов капчи улучшится) проблематично.

Вижу здесь 2 отдельные задачи:

  • предотвратить появление новых спамных сообщений (даже с премодерацией ,естественно);
  • удалить около 1000 уже автоматически одобренных (премодерация не была включена) сообщений.

Решение

Удаление сообщений через строку поиска, зайдя в любую ветку форума, не работает: Сайт перевели на PHP 7+, а текущая версия IPB под неё не рассчитана. То есть, поиск не работает. Починить не удалось: слишком мудрёный ООП-код.

Удалять через MySQL (PHPmyadmin) тоже не вариант: помимо самих веток форума, информация о постах (и об авторе последнего сообщения) удалена не будет. Что я сделал:

Включил премодерацию (и новых тем, и новых сообщений).

  1. Чтобы как можно быстрее скрыть спам от поисковых систем и посетителей, в шаблоне ветки форума написал дополнительный функционал: он «пробивает» каждый пост на наличие в нём стоп-слов (вынесены в отдельный файл), и если находит, просто выводит заглушку «удалено, спам» (с тегом, а точнее, комментарием noindex в HTML-коде) вместо текста.
  2. Доработал шаблон быстрых ответов (как гость, без регистрации / авторизации — 99% спама шло через него): приделал тот же функционал, только тут он проверяет сообщение сразу, после отправки.

Плюсы данного решения

Не надо обновлять CMS. Дёшево и относительно быстро.

Минусы:

Для добавления новых стоп-слов нужно открыть файл по FTP. Так как администрирует форум Invision Power Board человек с уровнем владения ПК выше домохозяйки, это не проблема.

Если клиент когда-нибудь всё-таки решится на обновление IPB и найдёт свою лицензию, — мои доработки перезапишутся (исчезнут). Зато, хочется верить, будут нормально работать штатные средства защиты (но это неточно).

Нужны подобные доработки? Обращайтесь!

Напишите комментарий

*