用于识别用户的其他PHP技巧

时间:2010-11-26 10:21:17

标签: php ip-address

我知道您可以通过PHP获取用户的IP地址,但有没有其他提示/技巧/脚本可用于以其他方式识别用户?

4 个答案:

答案 0 :(得分:3)

我公司正在建立的网站上有民意调查和竞赛,匿名用户每天可以投票一次。关于如何解决这个问题的建议是:

  1. 通过电子邮件确认进行身份验证(发送一封包含唯一链接的电子邮件)
  2. IP地址
  3. 饼干
  4. 电子邮件不会失败,但是用户可以拥有许多电子邮件地址,而且很麻烦(填写表格,打开电子邮件,点击链接 - 很多人都会这样做)。

    IP不可靠,因为ADSL用户每次连接到互联网时通常都会有不同的IP(至少是我国最大的ADSL提供商)。另外,代理是一个问题。

    可以轻松清除/禁用Cookie,此外,如果用户安装了多个浏览器,则可以多次投票。如果通过JS设置cookie,那么禁用JS的浏览器也可以免受此攻击。

    我们认为#2和#3的组合是最好的权衡,但没有完美的方法。

答案 1 :(得分:2)

目前还不清楚您是否正在运行SBS和Active Directory / LDAP系统,但这样可以让您根据Windows登录信息提取有关用户的更多信息。网上有很多关于这个主题的内容:

$_SERVER包含有关用户访问该网站的浏览器的信息:http://php.net/manual/en/reserved.variables.server.php

您还可以使用getbrowser()将该信息解析为人类可读的形式:http://php.net/manual/en/function.get-browser.php

答案 2 :(得分:0)

那么,最终,确定它们的最佳方法是设置身份验证系统并让它们登录。

或者,您可以尝试根据一堆不同的数据识别用户,例如他们正在使用的IP和浏览器(即,如果userip = ip&& userbrowser == browser ...) - 但这很容易规避。

检查$ _SERVER全局以查找可与之比较的任何其他数据。

我强烈建议您实施身份验证系统 - 这是识别用户的最佳方式。

答案 3 :(得分:0)

如果是内部唯一网站,则可以使用ident - 另请参阅RFC1413。有基于PHP的实现(尝试谷歌)。请注意,这要求客户端运行一个ident服务器,该服务器可从运行代码的Web服务器访问。你没有说客户端是什么操作系统 - 有适用于Linux,Unix,Apple Mac和MSWindows的识别服务器。请注意,身份响应未经过身份验证,并且(相对)可以轻易伪造。

微软解决这个问题的方法是NTLM - 但这是一个可以正确管理的PITA。