2

刚刚发现了WebUSB允许应用程序访问插入用户机器的特定设备的新 API。

作为我开发的一部分,我想映射用户的设备(例如,通过查询他们的 VendorID 和 ProductID 来显示连接设备的列表)。

我注意到,为了查询用户的所有可用设备,我必须使用以下代码:navigator.usb.requestDevice({filters:[]}).

此代码向用户提示权限消息,该消息必须为会话启用特定设备。

我的问题 - 是否可以在未经许可的情况下查询供应商 ID 和产品 ID?(当然没有任何尝试使用实际设备,只需查询它)。

4

1 回答 1

2

不可以。要访问设备,您必须使用requestDevice. 这是 API 的核心安全方面之一。从规格

...这个 API ...需要一个类似的通用机制来防止恶意页面滥用设备。

这些保护中的第一个是requestDevice()功能。调用此函数时,UA 可能会显示权限提示。即使对于非恶意页面,此操作也可以通过在用户意识到可能存在此类连接之前阻止站点连接到设备来保护用户隐私。

即使用户拥有给定设备这一事实也是您的页面/应用程序在未经用户许可的情况下不应访问的敏感信息。

于 2019-09-01T09:41:24.560 回答