识别 Machine/User ID Perl

Identifying Machine/User ID Perl

有一个网站禁止了我的一个客户。如果他使用计算机 'A' 在该站点注册一个帐户,他的帐户将立即被取消。如果他用计算机 'B' 注册一个帐户,那没有问题。 (该网站无法识别他) 我希望能够在我的网站上做到这一点。 (即:通过他的计算机识别用户)我可以识别环境变量,但这似乎不是这个网站正在使用的。 我不确定如何标记这个问题。任何帮助表示赞赏。

#!/usr/local/bin/perl

print "Content-type: text/html\n\n";
print "<pre>\n";

foreach my $key (sort keys(%ENV)) {
print "$key = $ENV{$key}<p>";
}
print "</pre>\n";

我理解正确,您的客户端使用同一网络内的计算机 A 和 B,因此请求来自同一 IP,对吗?

在服务器端 - 这就是您正在做的 - 您只能通过用户的 IP 地址来识别用户。其他所有内容(cookie、用户代理信息、语言偏好等)都是自愿发送的,并不可靠。

在禁用 JavaScript 的情况下重复您的实验,远程端可能无法识别用户。使用 JavaScript,您可以收集关于用户硬件和软件的大量信息:OS、安装的插件、安装的字体、屏幕分辨率、图形硬件的属性(通过绘制到 canvas 并分析结果)、音频硬件的属性,以及许多其他内容。请参阅 https://github.com/Valve/fingerprintjs2 以了解可能发生的情况。

然后您可以在 AJAX 请求中将所有信息发送回服务器并对其做出反应。但是这种方法也有先天的局限性:

  1. 用户可以禁用 JavaScript(尽管您可以通过在注册过程中要求 JavaScript 来避免这种情况)。
  2. 用户可能会操纵发送的信息。
  3. 用户可以阻止 AJAX 个呼叫或这个特定的 AJAX 个呼叫。

但实践表明,这种做法还是比较成功的。