【问题标题】:How to get Client Machine's Mac Address in a Web application如何在 Web 应用程序中获取客户端计算机的 Mac 地址
【发布时间】:2012-04-11 20:15:18
【问题描述】:

我必须获取运行我的网站的客户 PC 的 Mac 地址。那么如何获取客户端机器的Mac地址(而不是托管网站的服务器的Mac地址)。我需要兼容 IE、Firefox、Safari 和 Chrome 的脚本。

【问题讨论】:

  • 首先为什么要MAC地址?
  • 我有这样的场景,允许某些用户从某个固定 PC (管理员输入的 MAC 地址将与用户尝试登录的系统匹配),他/她将无法登录来自那些 PC 以外的其他设备。
  • 我尝试使用 javascript 获取 mac 地址。但是只有IE才有可能,其他浏览器不行。
  • @niravpatel 您可能无法在 IE 中读取 mac,如果它是从服务器提供的,并且大多数情况下您在 IE 中的安全设置将禁止这样做。 Web 应用程序安全性不应通过 MAC 地址进行中继。此外,当我们使用 javascript 获取 MAC 地址时,用户仍然可以修改逻辑并传递一个可以访问的假 MAC 地址。
  • 我不认为你可以得到客户端的MAC地址;说当它在不同的子网中时,因此通过交换机进行通信。如果它在同一个 SUBNET 中,那么只有你可以得到它的 MAC 地址。有人可以确认我的理解是否属实吗?

标签: asp.net networking


【解决方案1】:

实现这一点的唯一方法是使用可以在 java 中编程的小程序或插件(尽管根据Getting MAC address on a web page using a Java applet,java 本身可能不允许这样做),因为 javascript 自然不会泄露此类信息。最后,如果它位于内部网络上,您还可以从服务器端找到此信息,这通常使用半私有 wifi 网络登录页面。

基于下面的 cmets:由于它是一个内部网络,您可以在 asp.net 端检索 mac 地址,如下所示。您执行以下命令arp -a,它将返回一个包含所有 IP 地址的列表以及关联的 MAC 地址。接下来使用类似于

的东西
Request.Servervariables("REMOTE_ADDR")

您应该能够找到用户的 ip 地址,然后您可以将其与您从 arp 命令检索到的数据相匹配,瞧,您拥有当前用户的 mac 地址。

【讨论】:

  • 嗨大卫,感谢您的回复。在同一场景中获取 IP 地址而不是 MAC 地址的任何方式。 IP配置在哪里是DHCP(动态IP)。?
  • 我是否正确理解这是在内部网络上? (因为你有几个选项)
  • 我在上面编辑了我的答案,以反映在这种情况下如何找到mac地址。
  • 我仍然更喜欢 Windows 身份验证来限制某些用户,而不是他们登录的机器。 support.microsoft.com/kb/323176
  • 嗨大卫,谢谢你的好回答。但是我必须在后台使用 asp.net 运行 arp -a 命令,对吗?
【解决方案2】:

我有一些用户被允许从某些固定 PC 的场景(对于 管理员输入的 MAC 地址将与来自哪里的系统匹配 用户尝试登录),他/她将无法从其他人登录 比那些电脑

要以正确的方式实现上述目的,您应该依靠客户端证书来执行身份验证。如果未提供有效的客户端证书,则该请求将被拒绝。

您可以找到有关使用客户端证书保护网站安全的更多信息@http://support.microsoft.com/kb/315588

如果用户在内部网络中,对他们进行身份验证的首选方式是使用集成的 windows 身份验证,如http://support.microsoft.com/kb/323176 所述,并且授权将基于访问控制列表

【讨论】:

  • 嗨 Ramesh....感谢您的回答。通过使用上述技术,我必须在客户端可以访问网站的每台 PC 上安装客户端证书,对吗?
  • 是的。您需要安装需要从中访问的客户端证书。即使明天网络硬件发生变化,这也会对您有所帮助。但如果是内部网络,请查看集成身份验证。
  • 客户端证书对于内部身份验证是非常好的主意,但即使我的要求是实现更高的安全性。像特定的一个用户可以访问特定的两到三台电脑,而不是所有安装了客户端证书的电脑。以及其他无法登录到由第一个用户使用并安装了客户端证书的电脑的用户。
  • 如果您需要基于机器的授权(就像您使用 Mac 所做的那样),您可以使用客户端证书。如果您需要根据登录凭据对用户进行授权,则需要进行集成身份验证。
  • 嗨,ramesh,我必须部分实现。那有可能吗?怎么样?
【解决方案3】:

听起来这是一个内部网络。

另一种方法是通过使用 mac 地址,dhcp 服务器可以分配特定的 IP 范围。然后,您可以在服务器代码中检查该 IP 范围。没有办法在javascript中获取mac地址,但您可以轻松获取ip。另外,也许您的 dhcp 服务器可以发布 mac 地址 ip 地址表,供您的 Web 服务器通过 api 或其他方式使用 - 不确定,但可能值得研究。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 2012-03-14
    相关资源
    最近更新 更多