如何在服务器上获取唯一的客户端标识符

时间:2009-06-25 07:07:53

标签: asp.net javascript sql-server

我正在制作一个EventLog,它将在我的网站上记录交易日志。日志的详细信息将包括事务所在的公共IP以及本地IP地址(在公共IP下)。

我找到了获取公共IP地址的方法,但我无法找到交易所在地的本地IP或机器IP。

大量条目将由使用相同连接的人完成。即连接到同一连接的5台或10台计算机。

我需要找到进行交易的机器的机器IP(192.168.0.1用于下一个系统192.168.0.2)以及计算机名称......

这可能吗

7 个答案:

答案 0 :(得分:4)

为了澄清,当客户端通过路由器连接时,您需要客户端的私有IP地址吗?然后不,没有办法做到这一点。

你这样做是为了区分不同的用户吗?

你能使用像cookies这样的其他方法吗?

答案 1 :(得分:1)

如果您的客户端从NAT或防火墙后面连接,则无法可靠地获取其地址或计算机名称。如果您需要此类信息,那么您的协议应该作为请求的一部分请求它们,并且客户机应该自愿提供它们。无法验证所提供的信息(缺少部署受信任的加密基础结构,即您在客户端计算机本身中建立了强大的信任)。

答案 2 :(得分:1)

可悲的是,答案是否定的。没有现代浏览器会在HTTP事务中显示该私有地址。执行NAT(网络地址转换)的客户端路由器在进行IP连接时仅提供公共客户端IP地址。

答案 3 :(得分:0)

不太可能。请参阅http://javascript.about.com/library/blip.htm

中的简短讨论

答案 4 :(得分:0)

嗯,是的,我们这样做只是为了区分计算机以了解谁在进行输入......

既然你们说跟踪IP不是很可靠,还有其他方法可以用来做同样的事情

我只需知道输入每个条目的计算机。

欢迎任何建议

答案 5 :(得分:0)

您假设有一种方法可以知道从哪台计算机输入每个条目。没有人能确保这些信息存在。通常,它不会存在。

确保每台计算机唯一标识的唯一方法是让您识别它。例如,您可以通过客户端证书执行此操作。通常,如果您希望每台计算机都具有唯一标识符,则需要创建唯一标识符,然后将其放在该计算机上。然后,您需要计算机将该标识符发回。

计算机没有其他唯一标识符。

答案 6 :(得分:0)

这可能超出了你想要的范围,但却有一个有趣的读物:Remote physical device fingerprinting

这使您可以在没有合作的情况下,通过NAT或您可以想象的任何其他方式唯一地识别远程物理设备。