Недавно столкнулся с тем, что стандартный форум могут легко целенаправлено зафлудить и заспамить. Защиту от подобных случаев, можно разложить на несколько уровней:
Защита от флуда (от массовой, зачастую программной, отправки сообщений и создании тем). Решение активировать отправку сообщений, только после введения правильного кода с картинки. НО
Code
<?if($_SECURITY_CODE$)?> Код безопасности: $_SECURITY_CODE$ <?endif?>
Отображения кода (в форме добавления сообщений) работает, только если ответ пишет Гость. Если убрать условие, то всё равно работать не будет.
Вопрос: как заставить активироваться проверку введённого кода и для зарегистрированных пользователей тоже? Возможно ли?
Блокировка отправки сообщений для пользователей с неподтверждённым e-mail'ом. Всё бы просто. В форме добавления сообщений поставить условие на кнопку "Отправить": если мыло не подтверждено, то кнопка не отображается. НО флаг, указывающий на подтверждённость e-mail - носит переменная $_EMAIL_IS_VERIFIED$, которая не работает в форме отправки сообщений форума.
Вопрос: как получить эту переменную $_EMAIL_IS_VERIFIED$ на соответствующей странице? Возможно ли?
Блокировка отправки сообщений для пользователей, у которых не прошло 1 дня с момента регистрации (поможет при массовой регистрации аккаунтов, отправки сообщений через прокси или переменном ip). Тут я вроде сам справился, кому интересно: В дизайне формы отправки сообщений на форум ищем код кнопки "Отправить" и ставим для неё условие:
Code
<?if($CUR_USER_REG_DAYS$<1)?> Для отправки сообщений и создания новых тем, должно пройти 24 часа с момента регистрации пользователя. Приносим свои извинения. <?else?> Код кнопок "Отправить" и "Отменить" <?endif?>
Если кто поможет, ответив на вопросы, буду благодарен. Интересно будет услышать другие способы защиты форума от злоумышленников.
Запретите участникам писать на форуме, и сделайте автоперевод по подтверждению мыла в группу проверенные. Или установите вывод кода подтверждения для участников. Короче, изучайте админку.