Обработка злоупотреблений пользователей в рельсах

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

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

Однако, когда я подумал об этом, я понял, что просмотр списка отмеченных пользователей, чтобы решить, кого из них следует заблокировать, а кого снять, может занять очень много времени для администратора. Если не считать найма кого-то, кто будет снимать/блокировать пользователей, есть ли более автоматизированный и элегантный способ сделать это?


person Kenji Crosland    schedule 18.12.2009    source источник


Ответы (3)


До «Web 2.0» веб-сайты модерировались администраторами. Теперь цель состоит в том, чтобы заставить сообщества модерировать себя. StackOverflow сам по себе является фантастическим примером. система репутации позволяет пользователям выполнять более "административные" задачи, поскольку они доказывают, что им можно доверять. Если вы разрешаете пользователям отмечать друг друга, вы уже на этом пути. Что касается деталей системы (кто может помечать, снимать пометку и банить), я бы сказал, что вам следует изучить различные успешные онлайн-сообщества (например, StackOverflow), чтобы увидеть, как они работают и насколько они успешны. В конце концов, это, вероятно, потребует проб и ошибок, поскольку все сообщества разные.

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

person Alex Reisner    schedule 18.12.2009
comment
Мне очень нравится эта идея, я не хотел, чтобы какой-то случайный пользователь помечал других пользователей волей-неволей. Мне очень нравится система репутации StackOverflow. Спасибо за предложение! - person Kenji Crosland; 19.12.2009

Я бы создал таблицу с именем злоупотребления, содержащую как пользователя, о котором сообщается, так и того, кто подал отчет. Вместо помеченного логического поля я предлагаю иметь столбец кэша счетчика, такой как «abuse_count». Когда этот столбец достигает предопределенного значения, вы можете автоматически «забанить» пользователей.

person vise    schedule 18.12.2009
comment
Отличное предложение! Я мог бы просто реализовать это. - person Kenji Crosland; 19.12.2009

Некоторые изощренные спамеры с удовольствием тратят свое время на взлом вашей капчи, если считают, что вознаграждение достаточно велико. Вам также следует подумать о спам-сервере, таком как akismet, для которого есть отличный плагин для рельсов (https://github.com/joshfrench/rakismet).

Существуют и другие альтернативы, такие как defensio (https://github.com/thewebfellas/defensio-ruby), а также драгоценный камень, который я нашел однажды, который довольно хорошо работал при обнаружении обычного спама в блогах, но я не могу найти его больше.

person jonnii    schedule 22.01.2010