2

如果我创建一个 ASP.net 页面,我能否获得当前用户的 CPUID 和 BIOS 序列号?还是因为安全原因不允许这样做?

我目前有一个获取这些值的 Visual Basic.net 应用程序,我只是想知道我是否可以在网页上做同样的事情。

4

2 回答 2

3

简而言之,不,您无法仅使用常规的 html 和 JavaScript 网页来获取此信息。

然而,这不是说这是不可能的。

如果您的客户端计算机安装了 Java、Flash 或 Silver-light,那么让这些插件架构之一以某种方式查询客户端 PC 并收集这些数据并不是不可能的。我确实知道它可以通过 Java Applet 实现,因为许多公司(如 Nvidia 和 AMD)在让您选择要下载的驱动程序时使用它来获取硬件信息。

虽然这些人可能不是在寻找 BIOS 序列号之类的东西,但他们的本质就是使用与阅读您所寻找的信息所需的方法和方法相同的方法和方法。

就我个人而言,我也使用 Silver-light 完成了它,但在受控环境中,我对客户端计算机上运行的内容有发言权。

现在,除了最初的问题之外,大多数人都会提出这种性质的问题,因为他们正在寻找一种方法来唯一地识别他们网站的访问者,而无需保存 cookie 或类似的东西。

我之前在我编写的代码大师的 .NET Nuts and bolts 列的帖子中概述了一些方法(链接在这里),当前最常见的方法之一是指纹技术。

本质上,指纹技术的工作原理是将大多数现代浏览器现在提供给 Web 服务器的所有标准数据组合在一起,然后使用这些数据形成某种散列令牌或唯一标识符。

但是,如果您要使用此方法,您需要确保的是,您不会选择可能过于频繁更改的数据位。用户代理、屏幕分辨率、操作系统版本、java 版本等通常是不错的选择。您也可以使用 IP 地址来获取,但我会小心,因为现在大多数消费者都处于动态状态,因此它可能会发生意外变化。

如果你要指纹,你应该避免的事情是当前日期和时间,浏览器名称是否存在特定标题(当然,除非它是你提供的标题),任何会给你一个可以与许多人广泛匹配的答案的东西其他系统或频繁变化的系统是一个糟糕的选择。

您还可以在客户端使用 JavaScript,使用客户端本身的本地信息创建散列,然后使用 ajax 调用或隐藏形式或 url 参数将该散列发送给您。

2021 年 1 月更新

  1. 参考上面的链接,我不再为代码大师写作。我所有的原创文章都还在网上,但你必须搜索它们。
于 2014-05-27T22:15:55.717 回答
2

如果您在网页上执行此操作,您将获得服务器的 BIOS 序列号。因为VB.NET函数运行在服务器上。

您无法从简单的 HTML/JS/CSS 网页访问这些数据。对不起,这是一个安全问题。在访问某些 Internet 页面时,您不希望任何人知道您的硬件规格。

于 2013-04-21T06:56:49.580 回答