Существует ли надежный способ предотвратить обман в веб-конкурсе, где анонимные пользователи могут голосовать?

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

12
задан Jon Galloway 11 September 2008 в 05:12
поделиться

6 ответов

Короткий ответ: нет. Более длинный ответ: но можно сделать его произвольно трудным. Что я сделал бы:

  • Голосование требует решения капчи (для предотвращения как можно больше автоматизированное голосование). Чтобы быть еще более эффективным, я рекомендовал бы подготовить несколько типов простых капчей (как "выбор фотография с кошкой", "что 2+2", "вводят в слове", и т.д.) и поворачивают их обоих ко времени дня и IP, который должен сделать автоматические системы неэффективными (т.е. если кто-то использующий IP A создаст бота для решения капчи, то это станет бесполезным на следующий день или если он или она распределяет его на другие прокси компьютеров/использования),
  • При фильтрации IP необходимо стараться рассмотреть ситуации, где несколько хостов находятся позади одного общедоступного IP (AFAIK, AOL проксирует всех их клиентов через некоторых дюйм/с - таким образом, такое ограничение эффективно запретило бы пользователей AOL). Кроме того, много прокси отправляют вдоль заголовков, указывающих на исходный IP (как X-Forwarded-For), таким образом, можно смотреть на это также.
  • Наконец, использование чего-то как FSO (Общие объекты Flash - "Флэш-куки") достаточно неясно для 99,99% людей для не знания о. Silverlight еще более неясна. Для подхалима Вы могли купить другой домен и установить FSO от того домена (так, если пользователь будет искать набор FSO Вашим доменом, то они не будут видеть никого),

Ни один из этих методов не составляет 100%, но надо надеяться объединился, они дают Вам уровень гарантии, в котором Вы нуждаетесь. Если Вы хотите взять это уровень выше, необходимо добавить некоторую регистрацию пользователя (который может быть столь же простым как выяснение у допустимого адреса электронной почты, когда голосование происходит и отправление ссылки подтверждения к данному адресу и не подсчету голосов, для которых на ссылку не нажали - таким образом, это не должно быть законченное, "создают учетную запись с именем пользователя / пароль / имя елей / фамилия / и т.д.").

19
ответ дан 2 December 2019 в 18:23
поделиться

Нет, Вы не можете, и только требуются один человек и согласный форум для изменения результата голосования онлайн.

Необходимо понять, что свойственные дефекты голосования онлайн и вместо того, чтобы пытаться обойти их пытаются использовать их в ваших интересах.

- Adam

1
ответ дан 2 December 2019 в 18:23
поделиться

Клиентские решения отсутствуют по причинам, которые Вы перечислили - ими может управлять пользователь. Решения серверной стороны - как Вы сказали - можно дурачить и обойти.

Если Вы готовы принять то, что Вы не можете действительно быть на 100% уверены, что получаете точно одно голосование на человека, то существуют некоторые меры, которые можно принять для сокращения шума.

  • Используйте КАПЧУ в своей форме представления голосования, чтобы мешать ботам и сценариям голосовать.
  • Ограничьте количество голосов на IP-адрес одному.
  • Рассмотрите регистрацию требования для голосования. (Я знаю, что это побеждает часть Вашего исходного вопроса, но это дает Вам больший уровень контроля над голосованием.)

Это - хорошее начало.

0
ответ дан 2 December 2019 в 18:23
поделиться

Можно, конечно, мешать.

Что относительно того, чтобы создать профиль пользователя с такими вещами как IP-адрес, браузер useragent, название машины, и безотносительно другой информации можно добраться.

Сохраните профиль для каждого пользователя, затем при получении профиля, который уже достаточно подобен одному в базе данных (необходимо будет настроить это), можно вывести то голосование.

Я предполагаю, что можно, вероятно, создать лучший профиль с помощью Silverlight, хотя я не уверен, какая информация, которая предоставляет Вам доступ к.

0
ответ дан 2 December 2019 в 18:23
поделиться

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

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

лучший из всех, не позволяйте анонимным пользователям участвовать: позвольте им "играть" и доступ к моделированию, но конкурсу нужен вход в систему.

0
ответ дан 2 December 2019 в 18:23
поделиться

Нет, это - компьютер пользователя, и они сознают ситуацию. К сожалению, единственное решение состоит в том, чтобы возвратить его на Вашем суде так сказать и потребовать аутентификации.

Однако КАПЧА помогает ограничить голоса пользователям - людям, по крайней мере.

Конечно, даже с аутентификацией Вы не можете осуществить единственное голосование, потому что затем они учат ботов регистрироваться...

0
ответ дан 2 December 2019 в 18:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: