在PHP中生成用户唯一性的'指纹'的最佳方法是什么?
例如:
理想情况下,指纹会标记“机器”而不是浏览器或“ip”,但我无法想到这是如何实现的。
了解您如何唯一识别用户的想法/建议,以及您的方法有哪些优点/缺点。
答案 0 :(得分:13)
答案 1 :(得分:10)
最简单,最好的方法:使用phps session-management - 每个客户端都有一个id,存储在cookie中(如果已启用)或在每个链接和表单上作为get-variable给出。 (或者你可以自己设置一个cookie)。但是:这只是浏览器的“指纹” - 如果用户更改了浏览器,删除了他的cookie或其他任何内容,则无法识别它。
通过ip识别每个客户端通常是一个坏主意,不会起作用。使用相同路由器的客户端将具有相同的IP - 通过代理池连接的客户端可能在每次加载页面时都有另一个ip。
如果您需要一个无法由客户端轻松操作的解决方案,请尝试使用客户端浏览器支持的所有内容进行以下组合,并在每个页面加载时进行比较:< / p>
有一个名为evercookie的解决方案可以实现所有这些
答案 2 :(得分:3)
还有其他需要考虑的因素,用户的公共IP地址也会在每次页面加载时发生变化。
有多个组织在路由器中切换公共IP以平衡流量。
答案 3 :(得分:2)
无法保证实现100%的可靠性,但结合一些常用方法可以为您提供有意义的结果
采取可行的最简单的路线,并在必要时随时调整。
答案 4 :(得分:0)
我有三台不同的电脑,各种手持设备,其中很多都安装了不同的浏览器。我在家里互换使用所有这些,把它们带到我的其他地方,基本上,在各种IP地址上。我想要指出的是,如果你的目标是封锁一个人,那么指纹浏览器或机器就不会是万无一失的。
我建议你采取不同的方法。判断基于您可用的不确定信息,表明您的被禁用户的身份(相同的IP或相同的用户代理,如果它是一个不常见的或一些javascript浏览器指纹识别方法,如可用的字体,可用的插件,非标准窗口大小等)并要求那些可疑访问者进行更高级别的身份验证 - 例如oauth与Facebook,Google +或Twitter。然后,您可以查看该社交媒体帐户是真实的还是仅为了规避而创建。还有电话验证API,以防您的用户群不具备社交媒体知识,并且取决于用户不会规避禁止的价值。