У вас есть два ответа, вам нужно решить, какой из них лучше. Никакой вариант не будет пуленепробиваемым. Все дело в том, чтобы замедлить их, и какой уровень эффективности приемлем для вас.
Как правило, cookie это приемлемый способ сделать это. Да, куки могут быть удалены, но если желание предотвратить повторное голосование является , что важно, то регистрация - единственный эффективный способ предотвратить это. Любой другой механизм может быть побежден теми, кто хочет. Вы можете использовать что-то вроде Evercookie , но я не думаю, что это хорошая практика. Если вы сделаете процесс регистрации простым, но эффективным, это сделают некоторые пользователи.
IP-адрес так же несовершенен, как и большинство повторных IP-адресов, которые не назначаются статически. Кто-то может сбросить свой модем и получить новый IP-адрес. Или, что еще хуже, кто-то может сбросить свой модем, получить IP-адрес, который уже посещал сайт, и не сможет голосовать. Другой сценарий - пользователи позади NAT. Если 200 человек используют IP-адрес вместе с NAT, то только один из них сможет проголосовать.
Вы могли бы проявить творческий подход к IP-адресу. Продолжайте использовать куки, потому что это будет эффективно. Если вы начинаете обнаруживать несколько голосов с одного и того же IP-адреса (потому что они очистили свои куки), отобразите CAPTCHA . Если это не кто-то пытается злоупотребить системой, то он все равно получает возможность проголосовать. Это поможет победить автоматическое голосование и настолько замедлить пользователей, что злоупотребление вашей системой голосования не стоит их времени. Это также может быть побеждено, это то, какой уровень эффективности приемлем для вас. Даже регистрация не на 100% эффективна, но, вероятно, самая эффективная. Что может помешать кому-либо много раз регистрироваться с разными адресами электронной почты?