我正在创建匿名在线投票,我可以通过使用浏览器指纹消除一些重复的投票。但我还是担心如果用户改变他的浏览器并再次投票。所以我试图找出一个有效的设备指纹来解决这个问题。显然ip不是一个选项,因为我的目标用户可能在学校与同学共用同一个ip或住在与房间伙伴共享ip的公寓。
我正在尝试使用$_SERVER["REMOTE_PORT"
]并发现$_SERVER["REMOTE_PORT"]
将保留在同一设备上的相对编组范围内,无论我使用什么浏览器并且它总是在增加。例如,在Mac 1上,无论我使用什么浏览器,我的端口在10分钟的间隔内都在(58100,58200)范围内,类似地在Mac 2上,范围保持在(49200,49300)大约10分钟,无论我使用什么浏览器。我也在iphone上进行了测试,其范围是(50100,50200)。所以我想知道将$_SERVER["REMOTE_PORT"]
与指纹一起使用可以防止同一台设备上同一个人在短时间内重复投票吗?我还想提一下,所有上述实验都是在本地网络中完成的。所以你有更好的解决方案吗?或者您认为这可以在生产服务器中运行?
答案 0 :(得分:8)
确定用户设备没有可靠的方法。周期。
答案 1 :(得分:1)
如果在短时间内跟踪用户,可能会考虑使用电子标签和/或Cookie跟踪。
Etags是一个用于跟踪图像缓存的ID,但是如果您向每个用户提供不同的电子标记图像,则它实际上是一个透明的cookie(仅删除cookie不会清除它,您还必须删除浏览器缓存)
电子标签解决方案是要在这里有效地发布,所以这是一个git的例子。 https://github.com/lucb1e/cookielesscookies(我与这个git无关)
使用全部3,电子标签+浏览器指纹识别+ cookies是我发现跟踪匿名用户最可靠的方式。
但是,由于Cookie和缓存是特定于浏览器的,因此只需更改浏览器或在较新的浏览器上使用“隐身/私有窗口”即可规避这些技术。复杂的用户也可以使用匿名代理或tor浏览器来完全绕过用户跟踪的所有尝试。
唯一能够可靠跟踪用户的人是ISP。 (FBI / CIA在调查黑客攻击时会询问ISP日志以获取此信息。)