唯一标识一台计算机

6
我在一所大学工作,正在实施一个PHP Web应用程序。当这个应用程序从某个特定的计算机访问时,需要有不同的行为。我遇到的问题是,通过使用 $_SERVER['REMOTE_ADDR']gethostbyaddr() 从Web服务器上只能识别计算机通过的路由器,而无法识别特定的计算机名称。
是否有任何方法可以使那台特定的计算机向服务器标识自己,以便服务器知道Web应用程序是从该计算机访问的?该计算机正在运行kiosk模式下的Firefox,因此允许使用插件或Greasemonkey脚本...
9个回答

12

不幸的是,如果有人可以访问计算机,他可以窃取 cookie 并在其他计算机上设置相同的 cookie。 - Dmitriy
6
很遗憾,可能没有任何解决方案可以防止直接物理访问机器。 - ceejayoz

7

将Firefox的用户代理标头更改为某些唯一标识该机器的内容,然后您可以从$_SERVER ['HTTP_USER_AGENT']中提取此字符串。


4
您可以设置一个cookie,或者您可以修改您的Firefox安装使用的UserAgent头为某些独特的内容。
要更改User Agent字符串,只需在FireFox的地址栏中输入about:config,这是您通常输入URL(链接)的位置。我建议保留原始值,您只需在地址栏中输入about:就可以获取它。
现在按右键以获取上下文菜单,并从菜单项“新建”中选择“字符串”。输入首选项名称“general.useragent.override”,不带引号。接下来,输入您想要Mozilla Firefox使用的新User Agent值。我将我的名字和网站链接添加到了原始值中。您还可以从用户代理字符串列表中选择一个。通过在地址栏中输入about:来检查新值。
您可以从php中的$_SERVER['HTTP_USER_AGENT']检索此User-Agent字符串。

3

2
一些想法:
  • 设置一个持久的 cookie。(由于 FF 处于 kiosk 模式,您应该不用担心用户会清除它。)
  • 让该 kiosk 使用不同的 URL(也许带有查询字符串参数)。

不会按照机器的 MAC 地址( Gibson 告诉我们这是可能的)或类似方式工作;当硬件得到修复时太脆弱了。


1
为什么不实现一个认证系统,将需要特殊功能的用户放入一个特殊组中?

0

试试这个。

$something=$_SERVER['HTTP_USER_AGENT'];

为了唯一地识别用户,请检查$something是否与您自己的代码匹配。 如果是,则继续访问。


0

我相信你已经得到了一个非常好的答案,但如果你正在寻找一种能够唯一标识电脑而不是浏览器的解决方案,那么可以考虑使用FLASH COOKIES,也称为FLASH SHARED OBJECTS。

这些对象更加强大,可以用于存储高达100KB的数据,并且在所有具有Flash的浏览器中保持不变,因此它是更好的唯一标识用户的解决方案。


-4

дҢ жІҰжњ‰SessionIDеђ—пәџ дҢ зљ„SessionIDеғ”иҮӨи¶іе¤џе”ҮдёЂпәЊд»ӨдңүиҮ†е€«и®Ұз®—жњғгЂ‚


2
不过如果他们关闭了浏览器,就不行了。 - ceejayoz
完全同意ceejayoz的观点。与所提出的问题无关。 - Marc Rochkind
有趣的是,你们完全误解了答案。显然,sessionID在cookie中,并且即使关闭浏览器,cookie也会被维护。 - daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接