在PHP中确定返回“匿名”访客的方法

时间:2009-05-17 06:50:17

标签: php

有两类用户访问我的网站:注册用户和访客。注册用户由PHP会话,cookie和个人登录进行跟踪和保留。我发现管理员比较难以管理,所以我几乎没有权力提供内容。

我想打开用户(已注册或未注册)的编辑,以保存收藏夹,购物车,投票,投票,标签,上传和评论。同时,保护其他非注册用户的数据。

有哪些选项或最佳做法可以确定来自他人的独特访问者以及在允许他们贡献更多内容时要考虑的一些安全措施?我应该解决他们的安全/限制设置以提供贡献服务,还是我希望他们在中间见面并放松他们的一些设置以允许cookie等?

IP地址 - IP是一个选项,但只是暂时的。对于使用不同IP重新连接到其Internet的用户,它可以更改,并且就此而言,另一个用户可能最终共享相同的IP。 IP也可以是匿名的,共享的或误导性的。

PHP会话 - 确定会话(如果已启用),但在关闭浏览器时丢失。

Cookie - 可以存储会话数据,但很容易(通常)从客户端禁用。

标题数据 - 结合用户的已知详细信息至少可以对用户进行分组 - ISP,浏览器,操作系统,引用网站等。

编辑:我仍然无法理解所涉及的所有关键因素......我们为来宾设置了一个Cookie。将一堆编辑和用户历史记录附加到该会话。如果删除cookie,则数据浮动附加到任何内容并且用户丢失其数据。或者,如果用户登录,则应合并访客和用户数据...

4 个答案:

答案 0 :(得分:3)

我认为Cookie可能是最好的选择,因为它是您100%确定请求是唯一的唯一方式。当然,您可能会添加一个混合:如果禁用cookie,您可能可以尝试其他识别选项,例如IP地址方法,但这可能会使其过于复杂。

正如您所说,IP地址可能会发生变化,在某些组织中可能会有一组代理服务器设置,这些设置会使请求来自不同的IP。当然,您可以检查X_FORWARDED_FOR,但它们仍有可能发生变化。

我认为标题数据可能难以获得好的结果。如果您的组织具有相同的浏览器,操作系统,IP,那么它将显示人们是相同的。即使不在同一组织中的人可能仍然看起来相似(即通常通过代理服务器获得流量的AOL用户,大多数人可能会使用附带类似标题的'AOL浏览器'。)

在这两个选项中,IP将很容易实现,但显然存在我提出的问题。我认为检查标题中的唯一数据将是绝对的痛苦。

显然正如你所说,在关闭浏览器时会丢失会话,看起来你希望系统的行为就像他们是注册用户一样,所以cookie似乎是一个更明显的选择(特别是当你想要“收藏夹”时)持久)。

答案 1 :(得分:1)

我会选择会议。

您的用户可能会更改IP地址(容易在NAT和代理服务器后面混淆),修改/删除Cookie(当然可能),或更改其标题(通过切换浏览器轻松)。

如果不想识别访客,则无法识别访客。只需使用标准:cookies / sessions。

答案 2 :(得分:1)

你应该使用会话。 会话ID存储在cookie中(或者对于不接受cookie的用户,存储在具有PHPSID参数的URL中) 当用户关闭浏览器时,它们不会被删除,这取决于您如何设置会话/ cookie选项。 您可以将会话的时间限制设置为您想要的任何内容,因此请不要费心。 您还应该告诉您的用户(启用cookie) 关于登录时可以合并的数据,这是你的工作,以适当的方式合并,甚至询问用户是否应该保存选项。

答案 3 :(得分:0)

您可以结合使用所有可能发现的,不可能改变且可能唯一的识别点-通过查看panopticlick,您可以收集一堆数据,例如已安装字体和浏览器插件。您可以采用这些种类更多的唯一数据点并对其进行哈希处理以提供一个ID,然后将其与诸如Useragents和ip地址之类的不太唯一的数据进行比较。

但是,老实说,这非常复杂和偷偷摸摸。使用cookie /会话。如果用户不想启用Cookie,则他们出于某种原因不希望您进行所有匿名跟踪,因此您应该尊重他们的决定。