我知道您可以通过PHP获取用户的IP地址,但有没有其他提示/技巧/脚本可用于以其他方式识别用户?
答案 0 :(得分:3)
我公司正在建立的网站上有民意调查和竞赛,匿名用户每天可以投票一次。关于如何解决这个问题的建议是:
电子邮件不会失败,但是用户可以拥有许多电子邮件地址,而且很麻烦(填写表格,打开电子邮件,点击链接 - 很多人都会这样做)。
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。