如何从Web浏览器获取唯一的PC ID

Dou*_*ram 6 php apache

我有一个Web应用程序,它将运行几个特定的​​目标机器.我可以让用户在登录时选择他所在的机器,但这很容易出错.有没有办法可以从每台PC获取一些唯一的ID,将它们存储在我的服务器上的数据库中,然后当有人从特定的机器登录时,识别该机器?我想到了IP地址,但由于部署的性质,这些也可能会发生变化.但至关重要的是,我知道系统运行的是哪台机器.

注意:我不是要确定Web用户计算机的机器代码,因为这会违反隐私.我知道我的机器所以我想以某种方式将它们绑定到数据库.这对我来说也起到了安全作用,因为我可以拒绝来自未知机器的登录.

谢谢你的任何想法.我使用Code Igniter 3和Centos 6.5运行Apache

Rob*_*sen 5

没有客户端组件、浏览器插件或类似的东西,这是不可能的。最接近的替代方案是:

  • 使用cookies;
  • 使用客户端证书;
  • 使用浏览器指纹;

每个都有自己的缺点。


Dan*_*ray 3

您可以使用它作为计算机 ID:

$computerId = $_SERVER['HTTP_USER_AGENT'].$_SERVER['LOCAL_ADDR'].$_SERVER['LOCAL_PORT'].$_SERVER['REMOTE_ADDR'];
Run Code Online (Sandbox Code Playgroud)

它并不完全万无一失,因为 的值$_SERVER可以伪造,但是它仍然会增加一层不依赖于 cookie 的额外安全层。

  • 您的答案中与客户端相关的唯一两个值是“HTTP_USER_AGENT”和“REMOTE_ADDR”。对于内部部署,仅当所有计算机都具有固定 IP 地址时,使用远程地址作为标识符才有意义。对于外部部署,可能有数千台计算机使用相同的公共 IP 地址。至于用户代理,不仅很容易被欺骗,而且企业部署通常会要求用户在特定操作系统上使用特定浏览器,从而使所有用户代理字符串都相同。即使情况并非如此,将其用作标识符也是一个坏主意。 (2认同)