Двадцать пять Alter Ego

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


    Я сейчас вплотную озаботился этим вопросом, и хотел бы высказать, что я думаю по этому поводу. Конечно, ваши комментарии и мысли будут весьма ценны.

    Подразумеваем, что это открытый для всех, социально ориентированный веб-сайт, обладающий всеми достоинствами и недостатками обычного веб-сайта. Какие способы можно использовать:
    1. При первой регистрации записать IP и запретить повторную регистрацию с этого IP в течение, скажем, часа.
      Плюсы: пока только один — не каждый захочет ждать час для повторной регистрации.
      Потенциальные проблемы: (а) юзер может переконнектиться, (б) другой юзер с этого же IP не сможет зарегистрироваться и (в) особо терпеливые юзеры могут и подождать чуток.
    2. То же, что и в п.1, но, памятуя о возможности переконнекта с получением другого IP, наложить ограничение, скажем, в 5 минут с определенного диапазона IP. Плюсы и минусы те же, что и в п.1
    3. Использование cookies.
      Плюсы: условно железная (с оговорками, см. ниже) гарантия невозможности повторной регистрации
      Минусы: юзер может элементарно удалить куку.
    4. Использование пользовательских сессий.
      Плюсы: те же, что и в п.2
      Минусы: достаточно перезапустить браузер, и все идет насмарку.
    5. Запрещать регистрироваться с одного e-mail.
      Способ тупой, потому как любой человек в состоянии зарегистрировать тонну адресов.
      Комбинированный. Все вышестоящие пункты в любой комбинации. Соответственно, аккумулирует все их плюсы и минусы.


    6. Другое пока в голову не приходит. Что скажете, хабралюди?
    Поделиться публикацией

    Комментарии 14

      +1
      Способов "в лоб" вижу два:

      1. Использование манны (в хабре это патроны). Пользователь получает по n-манны за определённые действия, или просто по времени, которую тратит, как ему вздумается. Первый раз он ее получает не сразу.

      2. Пользователь после регистрации попадает в песочницу, и не может голосовать. Критерии выхода из "песка" на Ваш выбор.
        0
        Оба варианта хороши. Теоретически, можно их оба и использовать.
        Вариант с условной маной интересен тем, что юзер своими постами может зарабатывать определенное ее число, а потом тратить на свое усмотрение. За топик проголосовать - 10 единиц, за коммент - 5, и так далее. А там сам пусть решает, за что лучше. Хм... Хотя, наверное, голосование за топик лучше не ограничивать вообще. На Хабре ограничено? Я не знаю, потому что не имею привычки голосовать за все топики подряд :)
          0
          Угу, и вместо ограничения на голосования мы получим кучу тупых топиков от юзверей, пытаюшихся добить карму до возможности голосовать.
            0
            А какие тогда могут быть варианты? Случай с патронами тогда не подходит, потому что если человек зарегил 10 акков, то ему хватит и по одному патрону на каждый акк, чтобы задрать свой топик. Единственный вариант в этом случае - может, действительно подсчитывать карму юзера и число успешных его топиков и комментов (заплюсованные топики или нейтральные/заплюсованные комменты)? Черт его знает.
            Теоретически, можно еще подсчитывать среднее число постов за день, и следить за тем, чтобы юзер не постил слишком часто :), но это особо извращенный и ресурсоемкий способ.
        0
        Если пользователь зарегистрировал много ников, то писать под всеми ними он не будет. Значит через какое-то время можно устроить фильтрацию и перерасчет голосования. Убрать голосам "мёртвых душ".
          0
          Проблема не в том, чтобы время от времени удалять мертвые души, а в том, чтобы запретить этим душам голосовать.
          Хотя, я тут вижу такой полезный момент: попробовать ввести ограничение по той же, скажем, карме. Если 0 или минус, то вообще не разрешать голосовать. Таким образом пустышки отсеются. Наверное :)
            0
            C нулем и сейчас нельзя голосовать.
          0
          Блокировать IP и тем более диапазон IP- это очень неудобно. У меня, например, выход в интернет через прокси-сервер локалки, внешний IP-адрес не докуплен. Локалка не очень-то и маленькая. Я и так страдаю, что не могу ничего скачать с "Рапидшары"(почти всегда получаю от неё сообщение, что с моего IP только что качали).
          Не думаю, что пользователь,сразу получивший отказ в регистрации будет ждать час-два (пять? Выставлять мелкий таймаут - бессмысленно). А если очень сильно захочется зарегистрировать дополнительне логины, то можно будет пользоваться анонимными прокси-серверами. Т.е. защиты особо ни какой, а неудобств - масса.
          А вот идеи с "песочницами", "маннами" и т.п. заслуживают внимание.
            0
            Хабрахабр как раз и пытается решить эту проблему "современными" методами. Основная идея - отсрочить способность юзера совершать активные действия. Все перечисленные Вами способы имеют смысл, хотя и немного старомодны. Современная тенденция - комбинирование этих способов, причем не в "жесткой" манере (может - не может), а в "мягкой": показался пользователь подозрительным - увеличили ему срок пребывания в "песочнице".

            Ваша идея с email вовсе не бессмысленна - во первых, практика показывает, что многим лень регистрировать кучу ящиков (это же усложняет процесс создания виртуалов), а во-вторых - можно отсылать письмо-подтверждение с задержкой (5-10 минут и больше, если пользователь показался "подозрительным"). Разумеется, пользователь без подтвержденного email при этом не может писать, голосовать и т.п.

            Кстати, поясните Ваш пункт 4 - что значит "пользовательские сессии" и чем это отличается от п.3?
              0
              Сессия создается на стороне сервера при открытии браузером сайта и хранится на сервере (в отличие от кук, которые хранятся локально) до тех пор, пока не срабатывает тайм-аут (юзер неактивен какое-то время). Так что достаточно закрыть браузер и снова его открыть, чтобы была создана новая сессия. Ничего не могу сказать по поводу PHP-сессий, но в ASP.NET в сессиях можно хранить какие-то нужные переменные.
              Насчет подозрительных пользователей - каким образом вычислять его подозрительность?
                0
                Про сессии я это к тому, что механизм идентификации сессии все тот же - куки. Т.е. пункты 3 и 4 рядом смотрятся некорректно - с точки зрения клиента это одно и то же.

                Подозрительность пользователей - по все тем же признакам: количество регистраций с одного IP (в течение периода времени), с одним email, с одного браузера (индентифицируемого все тем же cookie - uid и т.п.) и т.п.
              0
              Необходима некоторая «сила» каждого пользователя, и её нижний предел. Если пользователь плюсует/минусует топик, вес его голоса равен силе. Пусть пользователь может плюсовать топик, если у него сила больше X. Нужно составить такой алгоритм расчёта силы, чтобы для любого натурального N трудозатраты на получение NX силы на одном аккаунте были не больше трудозатрат на получение X силы на N аккаунтах.
                0
                Что касается голосований за топик - к примеру, на Хабре он всегда инкрементируется на единицу, независимо от кармы, так что вес тут, как я понял, не имеет значения.
                Алгоритм расчета силы в этих условиях не оставляет много места для воображения. Критерий ее оценки - активность пользователя, то бишь количество топиков/комментов. И тут имеет место быть как раз накопление виртуальной маны. Накопил определенное количество - можешь голосовать. А дальше уже ориентироваться на аналог кармы.
                  0
                  Не, не все так просто :) Если считать просто количество топиков/комментов - то пользователи будут флудить ради силы. Надо считать количество топиков/комментов, заплюсованных другими пользователями (и вычитать - количество минусованных). Тогда общество будет саморегулируемым - главное, подобрать коэффициенты ;)

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое