【问题标题】:Want to get identification of client computer through c# code [duplicate]想通过c#代码获取客户端计算机的标识[重复]
【发布时间】:2014-08-12 15:18:01
【问题描述】:

我正在使用 ASP.NET C# 开发软件,我希望仅允许来自特定机器的用户登录该软件,即我希望用户从他的办公室计算机登录,但不应允许他登录从他的家用计算机或任何其他计算机访问该网站。为此,我尝试使用 C# 中的代码获取客户端计算机的 mac 地址,但此代码仅返回服务器的 mac 地址。另外,我在互联网上读到获取客户端计算机的mac地址效率低下。所以我想知道是否有更好的方法来从服务器识别客户端计算机。我正在使用以下代码。

string macAddresses = "";

foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
    if (nic.OperationalStatus == OperationalStatus.Up)
    {
        macAddresses += nic.GetPhysicalAddress().ToString();
        break;
    }
}
Response.Write( macAddresses);

【问题讨论】:

  • getting mac address of client computer is inefficient 除非客户明确传递它,否则您无法获取它..
  • 我不确定您是否会获得任何客户端计算机详细信息。这是违反安全规定的,所以我认为是不允许的。
  • 每个人都想得到运行浏览器的“客户端计算机的识别”……但是当他们自己的计算机被“识别”时,也没有人愿意提供这样的信息。除非人们乐于在任何地方被跟踪,否则您将很难获得这些信息,因为安全措施限制了浏览器对此类信息的访问。
  • 是否可以识别计算机或办公室的 IP 地址,因为我希望客户端仅在办公场所内或仅使用办公室计算机登录。
  • 是的,IP 是可能的。查看关闭原因...

标签: c# asp.net


【解决方案1】:

没有实用的方法可以在应用程序级别强制执行此操作。即使浏览器足够善良(或愚蠢)向您提供该信息,您也不能依赖它,因为用户很容易伪造它。 解决此问题的一种方法是在防火墙级别。

编辑:也不要永远以任何方式依赖 MAC 地址来确保安全。您无需成为出色的黑客即可获得任何您想要的物理 MAC 地址 - 使用虚拟机特别容易。

【讨论】:

    【解决方案2】:

    尝试获取 PC 的主板序列号,它是唯一的,并在运行应用程序时对其进行调节。

    --你也可以使用IP地址和MAC地址,但是在PC离线的情况下它们不会很好地响应。

    最好的办法是利用主板Serial,按照例子:

    使用 System.Management;

    在按钮点击事件中下一个代码:)

    private void button1_Click(object sender, EventArgs e)
    {
        ManagementObjectSearcher MOS = new ManagementObjectSearcher("Select * From        Win32_BaseBoard");
        foreach (ManagementObject getserial in MOS.Get())
        {
            label1.Text="Your motherboard serial is : "+ getserial["SerialNumber"].ToString();
        }
    
    }
    

    如果有帮助,请标记为答案 -考希克

    【讨论】:

    • 虽然这篇文章可能对某人有所帮助,但与问题无关,因为无法使用此类代码在用户用来浏览 ASP 的 client 计算机上运行。网站。
    猜你喜欢
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    相关资源
    最近更新 更多