我登录到我的路由器并填写了一些信息。我单击了一个按钮,一个字段自动填写了我的计算机的 MAC 地址。这怎么可能?它是否存在安全风险?
我通过VPN连接,我的计算机是最新的并运行Microsoft Security Essentials (MSE)。是否有可以获取 MAC 地址的 JavaScript 代码?MAC 地址是否在 IP 标头中发送?我很惊讶我至少没有被提示分享这些信息。
我登录到我的路由器并填写了一些信息。我单击了一个按钮,一个字段自动填写了我的计算机的 MAC 地址。这怎么可能?它是否存在安全风险?
我通过VPN连接,我的计算机是最新的并运行Microsoft Security Essentials (MSE)。是否有可以获取 MAC 地址的 JavaScript 代码?MAC 地址是否在 IP 标头中发送?我很惊讶我至少没有被提示分享这些信息。
这不是安全风险。
路由器在其ARP表中查找您的 IP 地址的 MAC 地址。它可以这样做的原因是因为您通过OSI模型中的第 2 层连接到路由器。路由器只需在 ARP 缓存中查找您的 IP 地址即可找到其 MAC 地址。Internet 上的网站未连接到您的 LAN,因此无法确定您的 MAC 地址。
同样,您可以从计算机中通过查看计算机的 ARP 缓存来确定路由器的 MAC 地址。如果您打开命令提示符(Windows 上的 cmd.exe)并输入“arp -a”,您将看到路由器的 MAC 地址。这不会造成安全风险,并且是 IP 流量在以太网网络上工作所必需的。
这里没有风险。
互联网不仅仅是一个协议,而是一系列相互叠加的协议。堆栈的每个部分的确切定义因人而异,但我们在这里关注的两个定义相当明确:链路层和网络层。根据你问的是谁,这些层有不同的数字,所以我将使用名称。
链路层定义了如何通过以某种方式直接连接的两台计算机获取信号。以太网就是一个例子,802.11 系列无线协议也是如此。我列出这些是因为它们使用 MAC 地址。调制解调器经常使用的 PPP 是链路层协议的另一个示例,但它不使用 MAC 地址。还有其他的链路层协议,但我不会在这里讨论它们。
网络层定义了如何使用以某种方式直接连接的计算机在未直接连接的两台计算机之间获取信号。这是 IP 存在的地方,它不使用 MAC 地址。* 数据仍然必须在直接相互连接的机器之间传递,但即使仅使用使用 MAC 地址的协议来完成,它也使用 MAC目前正在它们之间传递信息的两台机器的地址,而不是启动它的 MAC 地址。您的 MAC 地址仅对链中的第一个链接(计算机和路由器之间的链接)可见,并且它合法地需要它,因为这就是它如何将来自您计算机的数据与来自连接到它的其他计算机的数据区分开来。但在那之后,你的地址就不见了。
您的路由器知道您的 MAC 地址的原因是您使用链路层直接连接到它(它也可以在网络层看到您,这就是它向您呈现接口的方式,但这并不重要)。它无法看到没有以这种方式直接连接到它的任何人的 MAC 地址,因为该信息会在网络层丢失。** 其他机器也是如此。所以是的,您的路由器可以看到您的 MAC 地址,但其他人看不到。
*:IPv4 不使用 MAC 地址,如果您不确定您使用的 IP 版本,它可能是 IPv4。IPv6 允许(但不要求)计算机以某种方式使用 MAC 地址,并且一些实现会这样做,但它引起了很多争议。
**:再次假设您没有使用会泄露 MAC 地址信息的 IP 版本。
很好的多汁答案,但没有一个人回答了这个问题。
这怎么可能?
答案是在您允许的情况下是可能的。
是否有可以获取 MAC 地址的 JavaScript 代码?
嗯..Java可以
您访问过的网页很可能已请求您允许运行 Java 应用程序,并且您必须同意。Java 应用程序可以轻松检索您的 MAC并将其发送回网页。