使用 WebUSB 的 getDevices w/o 提示信息查询所有可用设备?
Querying all available devices using WebUSB's getDevices w/o prompt message?
刚刚发现新的 WebUSB
API,它允许应用程序访问插入用户计算机的特定设备。
作为我开发的一部分,我想映射用户的设备(例如,通过查询他们的 VendorID 和 ProductID 来显示连接设备的列表)。
我注意到,为了查询所有用户的可用设备,我必须使用以下代码:navigator.usb.requestDevice({filters:[]})
.
此代码向用户提示权限消息,必须为会话启用特定设备。
我的问题 - 是否可以在未经许可的情况下查询供应商 ID 和产品 ID? (当然没有任何尝试使用实际设备,只是查询它)。
没有。要访问设备,您必须使用 requestDevice
。这是 API 的核心安全方面之一。来自 the spec:
...This API...requires a similarly generic mechanism for preventing a malicious page from abusing a device.
The first of these protections is the requestDevice()
function. The UA may display a permission prompt when this function is called. Even for a non-malicious page this action also preserves user privacy by preventing a site from connecting to a device before the user is aware that such a connection is possible.
即使用户 拥有 给定设备这一事实也是敏感信息,您的 page/app 不应该在没有用户许可的情况下访问。
刚刚发现新的 WebUSB
API,它允许应用程序访问插入用户计算机的特定设备。
作为我开发的一部分,我想映射用户的设备(例如,通过查询他们的 VendorID 和 ProductID 来显示连接设备的列表)。
我注意到,为了查询所有用户的可用设备,我必须使用以下代码:navigator.usb.requestDevice({filters:[]})
.
此代码向用户提示权限消息,必须为会话启用特定设备。
我的问题 - 是否可以在未经许可的情况下查询供应商 ID 和产品 ID? (当然没有任何尝试使用实际设备,只是查询它)。
没有。要访问设备,您必须使用 requestDevice
。这是 API 的核心安全方面之一。来自 the spec:
...This API...requires a similarly generic mechanism for preventing a malicious page from abusing a device.
The first of these protections is the
requestDevice()
function. The UA may display a permission prompt when this function is called. Even for a non-malicious page this action also preserves user privacy by preventing a site from connecting to a device before the user is aware that such a connection is possible.
即使用户 拥有 给定设备这一事实也是敏感信息,您的 page/app 不应该在没有用户许可的情况下访问。