Как реализована защита от нечестного голосования?

В NorrCompetition защита от нечестного голосования (накрутка голосов) зависит от того, как настроен компонент.

По умолчанию пользователи не имеют права голосовать. Чтобы дать им такую возможность, необходимо зайти в Настройки компонента > вкладка Права доступа и разрешить пользователям выбранной группы голосовать за участников (выставить "Голосовать" в Разрешено).
Подробнее: Права доступа.

Итак, основной и первый уровень защиты - предоставить право "Голосовать" только зарегистрированным пользователям. Когда пользователь голосует, сначала проверяется его ID, и если пользователь еще не голосовал, ID записывается в таблицу голосов.

Уровни защиты ниже предназначены для случаев, когда мы даём право "Голосовать" незарегестрированным пользователям. Поэтому рекомендуется отключать их в случае, если мы разрешаем голосовать только зарегестрированным пользователям.

Второй уровень защиты – проверка IP-адреса. Когда пользователь голосует, сначала проверяется его IP-адрес, и если пользователь еще не голосовал, IP-адрес записывается в таблицу голосов. Для включения этой опции зайдите в Настройки компонента > вкладка Конкурс и установите параметр "Проверка IP" в значение Да.

Но, существует несколько проблем при проверке IP:

  • У многих пользователей динамические IP-адреса
  • Несколько пользователей используют один и тот же IP-адрес (например, различные организации). Для решения этой проблемы можно установить проверку комбинации IP+Fingerprint
  • Пользователь может использовать прокси-сервер для подмены IP-адреса

Третий уровень защиты – проверка Fingerprint. Отпечаток браузера - это невероятно точный метод идентификации уникальных браузеров. Отпечатки могут использоваться для полной или частичной идентификации отдельных пользователей или устройств, даже если cookie-файлы отключены. Более того, это помогает идентифицировать простых роботов, которые пытаются голосовать вместо человека.

Для включения этой опции зайдите в Настройки компонента > вкладка Конкурс и установите параметр "Проверка Fingerprint" в значение Да.

Четвёртый уровень защиты – проверка cookie. Когда пользователь голосует, компонент генерирует специальный cookie и записывает его в браузер пользователя. При наличии такого cookie пользователь не может проголосовать. Для включения этой опции зайдите в Настройки компонента > вкладка Конкурс и установите параметр "Проверка cookie" в значение Да.

Проблема проверки cookie в том, что пользователь может либо стереть файл cookie, либо просто проголосовать с другого браузера.

Ещё одной защитой является Captcha. Вы можете включить её отображение и защитить голосование от ботов. Captcha работает только на странице участника. Обратитесь к документу Настройка отображения участника.

Несмотря на все эти способы защиты, помните, что единственной практически 100% защитой от нечестного голосования является возможность голосовать только зарегистрированным пользователям.