Я строю проект Rails. Я пытаюсь добиться того, чтобы один человек не голосовал дважды на моем веб-сайте. Я действительно не хочу, чтобы люди регистрировались/регистрировались. Единственный способ, о котором я могу думать, - это как-то записать IP-адрес пользователя и заблокировать этот адрес. Я понимаю, что у одного человека может быть несколько разных устройств, но это не так важно, я просто не хочу, чтобы один человек голосовал сотни раз. Возможно ли это с Rails/Javascript?Возможно ли записать IP-адрес пользователя?
ответ
Просто используйте request.remote_ip
из в пределах вашего контроллера action.
Помните, что люди, стоящие за NAT, имеют один и тот же IP-адрес, однако они могут даже не знать друг друга, но тем не менее, они используют один и тот же IP-адрес. Подумайте о добавлении чего-то большего, чем просто IP-адрес, например. имя системы, имя браузера и т. д.
Так будет ли этот код работать? def vote/ request.remote_ip/ @ip = remote_ip/ end –
+1 для указания проблемы с пулом NAT. –
Да, это так. Вы можете получить доступ к IP-адресу через request.remote_ip
и добавить чек, чтобы разрешить голосование только в том случае, если IP еще не был проголосован.
Через JavaScript? No.
Вот способ, как получить IP-адрес в Rails:
request.remote_ip
Также упоминается в "Rails: Get Client IP address" и remote_ip
documentation.
Если вы хотите сделать это с помощью JavaScript-решения, я бы порекомендовал вам проверить «How to get client's IP address using javascript only?».
Вы можете получить доступ к IP-адрес пользователя по
request.remote_ip
Вы можете также печенье, чтобы обработать случай для пользователей, которые меняют свой IP (не так просто, как это, это просто пример:
cookies["voted"] = true
Конечно, кто-то, желающий обмануть систему, просто очистит их файлы cookie или использует частный режим, чтобы очистить его автоматически. –
- 1. Вспышка: возможно ли записать голос пользователя и действовать на нем?
- 2. Возможно ли записать эту функцию в Haskell?
- 3. Возможно ли записать изменяемую строку в java?
- 4. Возможно ли записать мой элемент управления WPF в фильм?
- 5. Возможно ли записать в локальный файл ресурсов из кода позади?
- 6. Возможно записать сцену в файл фильма?
- 7. Возможно ли записать функцию быстрого доступа Quake QuS в C#?
- 8. Возможно ли записать текст каждого запроса, выполняемого на SQL Server?
- 9. Возможно ли записать данные в реплицированный мастер в mysql
- 10. Возможно ли записать файл .webm с помощью gstreamer?
- 11. Возможно ли записать XML в память с помощью XmlWriter?
- 12. Возможно ли записать позже ссылки на INSERTed для удаления?
- 13. Возможно ли записать данные в листы Google с помощью JavaScript?
- 14. Возможно ли записать в BIOS из режима ядра Linux?
- 15. Возможно ли записать Oauth Token из Azure Powershell для отладки
- 16. Возможно ли записать входящий или исходящий звонок в iPhone?
- 17. Возможно ли записать данные в файл, используя только JavaScript?
- 18. Возможно ли записать IP-адрес и местоположение посетителя в файл?
- 19. Возможно ли записать такую рекурсивную функцию группировки в f #
- 20. Возможно ли записать несколько значений StringArray в одну строку?
- 21. Возможно ли записать данные в собственный stdin в Linux
- 22. Возможно ли записать журнал в scr/main/resources в logback?
- 23. Возможно ли записать файлы в интерактивную оболочку в объявлении потока?
- 24. Возможно ли записать сохраненную процедуру, например, в Solr?
- 25. Возможно ли записать объекты в файл во время транзакции IndexedDb?
- 26. Возможно ли записать действие при открытии другого приложения на Android?
- 27. Возможно ли записать MBR в ручном приводе любым шестнадцатеричным редактором?
- 28. Возможно ли получить идентификатор пользователя без разрешения?
- 29. Возможно ли получить список пользователей UIDatePicker пользователя?
- 30. Возможно ли установить приложение facebook для пользователя?
Вы понимаете, что легко заставить другие IP-адреса обманывать такую схему, и что в зависимости от сети многие действительные пользователи могут иметь один и тот же IP-адрес. Вместо использования IP-адресов подумайте об использовании адресов электронной почты. может генерировать кучу адресов электронной почты, но если вы отправите подтверждение каждому, что t эй, нужно отвечать только за то, чтобы проголосовать, спутник в конечном итоге устал от игры. –
@theTinMan Подождите, как кто-то может обмануть эту систему? –
Есть много способов, в том числе отключение их маршрутизатора/сетевого модема, пока он не получит новый IP-адрес, используя различные «луковые» маршрутизаторы .... Найдите «получить поддельный IP-адрес» и «луковые маршрутизаторы» для идеи. –