Тема: Маскировка ссылок на регистрацию и вход — борьба со спам-ботами
После переезда форума я получил доступ к логам и смог проанализировать типовое поведение спам-ботов, пытающихся зарегистрироваться на форуме. Поскольку обращение к register.php следовало сразу за считыванием главной страницы, возникло предположение, что боты достаточно тупы и заточены на присутствие ссылки на register.php — обычной для форумов, написанных на PHP. Что, если замаскировать ссылку, переименовать ее?
Внутрифорумные ссылки PunBB генерирует на основе схемы, что упрощает задачу. Я вручную подменил ссылки на страницу регистрации и страницу входа неочевидной последовательностью букв и цифр (хешем) и переименовал register.php и login.php. Для людей подмена осталась незаметной (кто-нибудь обратил внимание?), зато боты стали получать ошибку 404 при обращении по стандартному имени.
Антиспам-расширение Fancy stop SPAM работает как и раньше, я его не отключал. Но если до моего трюка в журнале событий спама были десятки попыток в час, то после — стало менее 10 в сутки. Заодно выяснилось, что существуют боты с другим алгоритмом (заточенные на анализ текста ссылок или их позицию в меню, не знаю), для которых моя маскировка не помеха.
Поскольку эксперимент оказался успешным, планируется соответствующим образом доработать ядро PunBB:
Завести настройку «Маскировать ссылки на регистрацию и вход», доступную администраторам.
Генерировать замаскированные ссылки на основе сеансовой куки и проверять их валидность для каждого сеанса, обеспечиваемого PHP.
В плане объема кода эта возможность весьма легковесна, так что целесообразно добавить ее в ядро PunBB, а не делать расширением.