【问题标题】:Is it possible record a user's IP address? [duplicate]是否可以记录用户的 IP 地址? [复制]
【发布时间】:2014-12-27 04:38:53
【问题描述】:

我正在构建一个 Rails 项目。我想要完成的是防止一个人在我的网站上投票两次。我真的不想让人们必须注册/登录。我能想到的唯一其他方法是以某种方式记录用户的 IP 地址并阻止该地址。我意识到一个人可以拥有几种不同的设备,但这并不重要,我只是不希望一个人投票数百次。 Rails/Javascript 可以做到这一点吗?

【问题讨论】:

  • 您确实明白,很容易让其他 IP 欺骗这种方案,并且根据网络,许多有效用户可能拥有相同的 IP 地址。考虑使用电子邮件地址,而不是使用 IP。当然,有人可以生成一堆电子邮件地址,但如果您向每个人发送确认信息,他们必须回复才能投票,那么欺骗者最终会厌倦游戏。
  • @theTinMan 等等,怎么会有人欺骗那个系统?
  • 有很多方法,包括关闭他们的路由器/网络调制解调器直到它获得一个新的IP,使用各种“洋葱”路由器......搜索“获取假IP地址”和“洋葱”路由器”的想法。

标签: javascript ruby-on-rails ruby ruby-on-rails-4 ip


【解决方案1】:

只需在控制器操作中使用request.remote_ip

请记住一件事,NAT 后面的人拥有相同的 IP,但他们甚至可能彼此不认识,但他们仍然使用相同的 IP 地址。考虑添加不仅仅是 IP 地址的内容,例如系统名称、浏览器名称等

【讨论】:

  • 那么这段代码行得通吗? def vote/ request.remote_ip/ @ip = remote_ip/ end
  • +1 用于指出 NAT 池问题。
【解决方案2】:

以下是如何在 Rails 中获取 IP 地址的方法:

request.remote_ip

也在“Rails: Get Client IP address”和remote_ip documentation中提到。

如果您想使用 JavaScript 解决方案来完成此操作,我建议您查看“How to get client's IP address using javascript only?”。

【讨论】:

    【解决方案3】:

    是的,是的。您可以通过request.remote_ip 访问 IP 地址并添加检查以仅在该 IP 尚未被投票时才允许投票。

    通过 JavaScript?没有。

    【讨论】:

      【解决方案4】:

      您可以通过以下方式访问用户的IP地址

      request.remote_ip
      

      您还可以使用cookie来处理更改IP的用户的情况(没有这么简单,这只是一个例子:

      cookies["voted"] = true
      

      【讨论】:

      • 当然,想要欺骗系统的人只会刷新他们的cookie或使用私有模式自动清除它。
      猜你喜欢
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多